我在計算二叉樹高度的邏輯之間有點混淆。混淆 - 二叉樹高度
代碼1
public static int findHeight(Tree node) {
if(node == null)
return 0;
else {
return 1+Math.max(findHeight(node.left), findHeight(node.right));
}
}
代碼2
public static int findHeight(Tree node) {
if(node == null)
return -1;
else {
return 1+Math.max(findHeight(node.left), findHeight(node.right));
}
}
我認爲,第二個是正確的,因爲它給出了下面的代碼正確答案: -
Tree t4 = new Tree(4);
Tree t2 = new Tree(2);
Tree t1 = new Tree(1);
Tree t3 = new Tree(3);
Tree t5 = new Tree(5);
t4.left = t2;
t4.right = t5;
t2.left = t1;
t2.right = t3;
// Prints "Height : 2" for Code 2
// Prints "Height : 3" for Code 1
System.out.println("Height : " + findHeight(t4));
我很混淆ED,因爲許多其他SO答案的顯示邏輯,用於計算高度按碼1
矛盾邏輯
UPDATE:
所有,我對於確切的東西有一個基本的疑問樹的高度?
1.它是否是樹的根節點和最深節點之間的節點(包括兩個 - 根&最深的節點)?
2.樹的根節點和最深節點之間是否有邊界?
OR
3,它是實現每個人的只是事情 - 這兩種方法是正確的?
但是沒有問題。 – Maroun
檢查更新! – tmgr
這是一個完全任意的定義。你想要的高度是邊數還是節點數?只要你一致,一切都會解決。 – Teepeemm