【发布时间】:2016-10-18 22:42:49
【问题描述】:
所以我需要为我的应用程序创建一个基本的二叉树,但我在概念化如何“导航”时遇到了麻烦,即使在生成过程中也是如此。
每个节点当然有一个地址,并通向另外两个节点,它们分别持有一个正值和负值。我的问题是,如果我想使用循环创建树,我该怎么做?第一次迭代将有两个节点,第三次将有四个,依此类推 - 在推进循环之前如何循环遍历它们的每个地址?
for(int i=1;i<=5;i++){
(*currentAddress).value = i;
(*currentAddress).positive = i;
(*currentAddress).negative = i*-1;
//update current address
}
我是否必须在每次迭代时都使用 BFS 并一直添加节点,直到创建 (2^n-1) 个节点?
【问题讨论】:
-
看看前序、后序和中序树遍历。这应该为您指明正确的方向。
-
注意:数组索引从 0 到 n-1。所以:
for(int i=0;i<5;i++) ... -
请学习一下,什么是二叉树(它的结构)。在其他两个节点中没有正值或负值。左子树中的值较小,右子树中的值较大。只有正确理解后,才能开始思考算法。
-
谢谢大家!是的,Ivan 我的树在这方面有所不同,我已经预先知道所有节点将包含什么(每个“深度级别”中的数字相同,只有一个是正数,另一个是负数。
标签: c