我在二叉搜索樹上做了一個小型的Java工作,但是當我將一個節點遞歸插入到樹中並顯示它時,我什麼也沒得到。我已經有一段時間了,我不知道,但我認爲這是一個通過引用的問題。二叉搜索樹遞歸插入不顯示任何東西
這裏是我的代碼:
public class BST {
private BSTNode root;
public BST() {
root = null;
}
public BSTNode getRoot() {
return root;
}
public void insertR(BSTNode root, Comparable elem) {
if (root == null) {
root = new BSTNode(elem);
}
else {
if (elem.compareTo(root.element) < 0) {
insertR(root.left, elem);
} else {
insertR(root.right, elem);
}
}
}
public void printInOrder (BSTNode root) {
if (root != null) {
printInOrder(root.left);
System.out.println(root.element);
printInOrder(root.right);
}
}
}
class BSTNode {
protected Comparable element;
protected BSTNode left;
protected BSTNode right;
protected BSTNode (Comparable elem) {
element = elem;
left = null;
right = null;
}
}
我執行了一系列insertR與根是一個節點插入到與ELEM是一個字符串,但它不打印任何東西了,因爲如果樹是根本沒有填寫。我敢肯定,這是我的遞歸插入問題,但我不知道在哪裏,我需要使用遞歸插入方法,返回什麼,我認爲是不可能的。
任何幫助將是偉大的。
Shudn't第二行將是私人BSTNode根? –
同樣你也可以添加可比元素的構造函數 –
是的,它應該是BSTNode根,抱歉沒有檢查那個部分。可比較的元素可以是任何東西,在這種情況下,我正在使用字符串 –