ITPub博客

首页 > 应用开发 > C/C++ > 给定数组按要求生成树

给定数组按要求生成树

原创 C/C++ 作者:代码女民工 时间:2021-09-26 16:33:32 0 删除 编辑

假设给你一个非负整数且不重复的序列 如{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博客 ” ,链接:https://blog.itpub.net/70007056/viewspace-2793836/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2021-09-17

  • 博文量
    38
  • 访问量
    25119