我是理解和学习数据结构的新手。我在搜索一些教程后尝试实现树数据结构。看起来不错,但我不明白这里有点奇怪的递归行为。有人可以帮助我理解代码。
我已经包含了一些打印语句来理解递归流程,但无法理解为什么没有返回当前引用?
public class TreeCheck {
Node root;
private Node addRecursive(Node current, int value) {
if (current == null) {
return new Node(value);
}
if (value < current.value) {
current.left = addRecursive(current.left, value);
} else if (value > current.value) {
current.right = addRecursive(current.right, value);
} else {
// value already exists
return current;
}
System.out.println("current is "+current.value); //Please compare in the
image why the
return current;
}
public void add(int value) {
root = addRecursive(root, value);
System.out.println("value is "+root.value);
}
public static void main(String h[]){
TreeCheck bt = new TreeCheck();
bt.add(6);
bt.add(4);
bt.add(8);
bt.add(3);
bt.add(5);
bt.add(7);
bt.add(9);
}
class Node {
int value;
Node left;
Node right;
Node(int value) {
this.value = value;
right = null;
left = null;
}
}
为什么 current 语句被打印两次并且总是只在 current 有时被重新分配时才返回根元素?
慕运维8079593
翻过高山走不出你
相关分类