這是我寫的用於創建二叉樹並在其中插入元素的Java程序。但是,我無法編寫程序來遞歸地插入元素,因此必須分別手動指定左側和右側的子元素。如何遞歸插入二叉樹並遞歸地打印元素?
這裏是我的代碼:
public class BinTree {
private Node root;
private class Node {
Node left;
Node right;
int data;
private Node(int data) {
this.data = data;
left = null;
right = null;
}
}
public BinTree() {
root = null;
}
public void preorder(Node temp) {
temp = root;
if(temp != null) {
System.out.print(temp.data + " ");
preorder(temp.left);
preorder(temp.right);
}
}
public void add() {
root = new Node(10);
root.left = new Node(20);
root.right = new Node(30);
root.left.left = new Node(40);
root.left.right = new Node(50);
root.right.left = new Node(60);
}
public static void main(String[] args) {
BinTree bt = new BinTree();
bt.add();
System.out.print(bt.root.data);
System.out.print(" " + bt.root.left.data);
System.out.print(" " + bt.root.right.data);
System.out.print(" " + bt.root.left.left.data);
System.out.print(" " + bt.root.left.right.data);
}
}
此外,序遍歷我寫了上面的程序失敗,我得到了一些無休止的輸出。不得不殺死執行!
因此,如果有人能夠提供給我遞歸插入元素到二叉樹的正確實現,那將是非常有幫助的。
另外,如果可能的話,你能告訴我在我的前序遍歷中我犯了什麼錯誤嗎?
在此先感謝!
您不清楚如何遞歸插入節點;爲此目的的功能需要有一個關於如何找到插入位置的標準。 – Codor
是的,這正是我卡住的地方!在上次插入後,我無法找到下一個插入點的位置! – doctorwho