我正在尝试创建一个二叉树。我只给出了树中节点的数量。第一件事就是使用索引(BFS订单)来跟踪总节点数,然后使用递归定义。这是我的伪代码来做到这一点。创建固定大小的二叉树
N = 10 //binary tree total node count
i = 0 //global integer
function()
if i > N
return True
create node i
i = i + 1
function(i) //left
i = i + 1
function(i) //right
我必须在这个定义中使用一个全局变量,这让我觉得我可能违反了递归规则。有没有更好的方式去做我所做的事情,如果是这样,是否可以改进?
注:我在询问理论方法,而不是代码。
编辑:我刚刚意识到这种方法失败。我很乐意提供建议。
澄清:这棵树的要求是不添加元素的深度,如果前面的深度不填充节点(所有节点有2个孩子),原谅我之前没有提到这一点,作为我在评论中提到的堆栈,它与问题无关,只是迭代地遍历树的常规方式。
这个问题并没有说你需要递归生成树;也许你误解了这个问题。至于生成的树:它基本上是一个链表,因为只有左边的孩子会被创建。至于'i':你的代码是不正确的,但它已经在没有全局变量的解决方案的中途。你已经定义了没有参数的'函数',但是用'i'作为参数... – Paul
@Paul我选择使用递归进行学习。但迭代方法也是可应用的,需要在程序中定义一个堆栈。 – Rockybilly
你应该澄清你真正想要的。特别是:树的要求是什么?除了树会包含'N + 1'个节点的事实之外,您的算法创建了一个完美的树。这个问题与堆栈有什么关系? – Paul