【发布时间】:2016-02-24 11:19:45
【问题描述】:
我正在研究一种按级别顺序构建二叉树的小算法。我得到一个数组,我必须使用其中的值按级别顺序构建二叉树。例子: arr inarr[5]={1,2,3,4,5};
给定一个这样的数组,我需要填充一个二叉树,看起来像这样:
1
/ \
2 3
/ \ / \
4 5 * *
(* 为 NULL) 这些节点是基本的二进制节点,带有一个左右指针和一个用于保存数组值的 int 的空间。
我了解基于树的高度遍历树的概念,并且您一次通过它一层,但我不确定以这种方式正确构建它的正确逻辑。
【问题讨论】:
-
在 O(n) 中构建一棵空树,如果您的数组已排序,那么您可以按顺序遍历它并相应地填充节点。你构建的树是一个完整的二叉树,从右边删除叶子,所以匹配你的数组大小
-
@FireSun 我检查了您报告的可能重复的帖子,事实是我没有发现任何关系。你能查一下吗?
-
如果
arr inarr[5]={3,1,2,4,5};,会构建相同的树吗?
标签: c arrays algorithm binary-tree