給定陣列按要求生成樹

程式碼女民工發表於2021-09-26

假設給你一個非負整數且不重複的序列 如{1,2,3,4}生成的樹    

根節點自己設定 值為-1  那麼它有4個子結點 分別為1 2 3 4
我們將4個結點稱為父序列
在每個結點中都要生成 父序列中不包含父結點 的子結點 如果父序列除去父結點外沒有元素 就不生成
例如 結點1生成的子結點為2 3 4
每個子結點都要繼續產生子結點 直到無法生產。


#include <iostream>

#include <string>

using namespace std;


std::string foo( const int buf[], size_t bufsize, const std::string& prefix="" )

{

    if( bufsize == 0 )

        return {};


    std::string result = std::to_string(buf[0]) + '\n';

    for( size_t i=1; i!=bufsize; ++i )

        result += prefix + (i+1!=bufsize?"├─":"└─") + foo( buf+i, bufsize-i, prefix+"│ " );

    return result;

}


int main( void )

{

    int a[] = { -1, 1, 2, 3, 4 };

    cout << foo(a,std::size(a)) << endl;


    int b[] = { -1, 1, 0 };

    cout << foo(b,std::size(b)) << endl;

}



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70007056/viewspace-2793836/,如需轉載,請註明出處,否則將追究法律責任。

相關文章