求二叉樹中的最大直徑

2021-10-03 17:17:54 字數 1019 閱讀 8784

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...