如何输入n建立深度为n的完全二叉树(C实现)

发布于 2022-09-01 23:01:59 字数 36 浏览 13 评论 0

如题,求解如何建立(c和c++均可)。先谢谢大家了!orz

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

千里故人稀 2022-09-08 23:01:59

我猜题主想问的是如何建立深度为n的满二叉树吧,因为深度为n的完全二叉树的结点数是不固定的啊,只给一个深度n,我怎么知道你有多少结点。深度为n的完全二叉树的结点数范围为$2^{n-1}$ to $2^{n}-1$ (为毛latex图片显示不出来,显示的是语法串)。题主先把概念搞清楚。
这段代码给你参考一下,是c++写的,稍微改一下就行了。利用层序遍历的思路,用到了stl的一个队列。

//num是结点数,而不是树高
void CreateTreeLevel(TreeNode* &rt, int num)//
{
    queue<TreeNode*> q;
    rt = new TreeNode(1);
    TreeNode* cur = rt;
    q.push(cur);
    for(int i = 2; i <= num;)
    {
        cur = q.front();
        q.pop();
        cur->left = new TreeNode(i++);
        q.push(cur->left);
        if(i >= num)
            break;
        cur->right = new TreeNode(i++);
        q.push(cur->right);
    }
}
苦妄 2022-09-08 23:01:59
Struct Node{ Node(Node*_l, Node*_r):left(_l), right(_r){} Node* left, *right;};

Node* build(int depth){
    if (depth ==0) return Null;
    return new Node(build(depth-1), build(depth-1));
}
初心 2022-09-08 23:01:59

我只是试试看。。。。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文