leetcode 543. 二叉樹的直徑
給定一棵二叉樹,你需要計算它的直徑長度。一棵二叉樹的直徑長度是任意兩個結點路徑長度中的最大值。這條路徑可能穿過根結點。
乙個二叉樹的最大直徑 = max
class
solution
return math.
max(math.
max(
diameterofbinarytree
(root.left)
,diameterofbinarytree
(root.right)),
deepth
(root.left)
+deepth
(root.right));
}// 乙個方法,輸入根節點,可以計算深度。
public
intdeepth
(treenode root)
queue
queue =
newlinkedlist
(); queue.
add(root)
;int dep =0;
while
(!queue.
isempty()
)if(node.right!=null)
} dep ++;}
return dep;
}}
無論如何,乙個路徑一定會有乙個最近的公共父結點。路徑長度 = 這個父結點的左右子樹深度和
我們只需要遍歷所有結點的左右子樹深度和,找到最大的那個值就可以了。
深度優先遍歷,設定乙個成員變數,記錄最大的直徑。
class
solution
public
intdep
(treenode node)
}
543 求二叉樹直徑
假設我們知道對於該節點的左兒子向下遍歷經過最多的節點數 l 即以左兒子為根的子樹的深度 和其右兒子向下遍歷經過最多的節點數 r 即以右兒子為根的子樹的深度 那麼以該節點為起點的路徑經過節點數的最大值即為 l r 1 我們記節點 node 為起點的路徑經過節點數的最大值為dnode,那麼二叉樹的直徑就...
二叉樹的直徑
題目 給定一棵二叉樹,你需要計算它的直徑長度。一棵二叉樹的直徑長度是任意兩個結點路徑長度中的最大值。這條路徑可能穿過根結點。示例 給定二叉樹 返回 3,它的長度是路徑 4,2,1,3 或者 5,2,1,3 注意 兩結點之間的路徑長度是以它們之間邊的數目表示。思想 我們不難發現這個問題的本質就是求每個...
二叉樹的直徑
題目 給定一棵二叉樹,你需要計算它的直徑長度。一棵二叉樹的直徑長度是任意兩個結點路徑長度中的最大值。這條路徑可能穿過也可能不穿過根結點。definition for a binary tree node.public class treenode class solution diameterofb...