我剛剛瞭解二叉樹,我試圖創建一個插入方法。我的第一種方法不起作用,我做了一些調整。它現在可以工作,但我不明白爲什麼以前的方法失敗。二叉樹:爲什麼一個插入方法的工作和其他不是
不工作的方法是:
if(root == null)
{
root = new Node(data);
}
else if(data < root.getData())
{
insertNode(root.getLeft(), data);
}
else
{
insertNode(root.getRight(), data);
}
,它的工作方法:
if(data < root.getData())
{
if(root.getLeft() == null)
{
root.left = new Node(data);
}
else
{
insertNode(root.getLeft(), data);
}
}
else
{
if(root.getRight() == null)
{
root.right = new Node(data);
}
else
{
insertNode(root.getRight(), data);
}
}
任何解釋,爲什麼出現這種情況?因爲我看到它的方式,root應該等於root.left,因此將root設置爲新節點應該與將root.left/right設置爲新節點相同。
第二個代碼中的異常/問題是什麼?我沒有看到第二個代碼中的根空值檢查。在這種情況下,你不能在第一個代碼中插入第一個元素 – JohnnyAW
@JohnnyAW:他調用insertNode(null,data),這是行不通的。但我還需要一些時間來得到它^^ –
@ user2776326我認爲你的第二個代碼有問題,因爲在root爲空的情況下,它將如何與數據進行比較? –