我有一段代码,用于在java中向二进制搜索树插入节点,如:
public class BST {
private Node head;
public BST() {
this.head = null;
}
public void add(int data, Node head) {
if (head == null)
head = new Node(data);
else {
if (data < head.data)
add(data, head.left);
else
add(data, head.right);
}
}
public void add(int data) {
add(data, this.head);
}
public void preOrder(Node head) {
if (head != null) {
System.out.print(head.data + " ");
preOrder(head.left);
preOrder(head.right);
}
}
public void preOrder() {
preOrder(this.head);
}
public static void main(String[] args) {
BST bst = new BST();
for (int i = 0; i < 10; i++) {
bst.add(i);
}
bst.preOrder();
}
}
为什么我运行程序时不打印我的信息?谢谢你回答我的问题!!
2条答案
按热度按时间cnh2zyt31#
当递归返回时,不更新左/右指针。此外,局部变量head与示例变量不同。因此,当方法返回时,您创建的新节点将被丢弃。
这里有一个方法。
二等兵
add
方法返回更新的节点,该节点在递归返回时被(重新)分配。b1payxdu2#
还有一个选择: