【发布时间】:2012-04-12 03:50:01
【问题描述】:
当谈到递归函数时,我完全迷失了方向。我需要创建一个递归函数来遍历二叉树并在特定值之间插入一个新节点。我是否需要重新复制我的遍历函数并在我使用它的所有其他函数中修改它?有人可以评估一下遍历功能吗?
我觉得我的遍历代码没问题。
Node traverse (Node currentNode){
if (!currentNode.left.equals(null)){
traverse (currentNode.left);
return currentNode.left;
}
if (!currentNode.right.equals(null)){
traverse (currentNode.right);
return currentNode.right;
}
return currentNode;
}
【问题讨论】:
-
traverse方法用于使用二叉树中的元素,但您返回的是左根、右根或根(即使根是null!)。递归函数的想法是定义基本情况,然后定义重复代码直到该基本情况 -
您要进行什么样的遍历?是
BST吗?是否需要在BST的正确位置插入节点? -
如果您向左遍历,您将作为第 4 行的最后一步返回,并且永远不会向右遍历,并且永远不会返回 currentNode。看起来不太好。
-
具体值在哪里?你的函数看起来几乎像一个预序遍历,但由于不清楚它应该做什么,所以无法评估它实现它的效果。
标签: java binary-tree