假设给你一个非负整数且不重复的序列 如{1,2,3,4}生成的树
根节点自己设置 值为-1 那么它有4个子结点 分别为1 2 3 4
我们将4个结点称为父序列
在每个结点中都要生成 父序列中不包含父结点 的子结点 如果父序列除去父结点外没有元素 就不生成
例如 结点1生成的子结点为2 3 4
每个子结点都要继续产生子结点 直到无法生产。
#include
#include
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;
}