543 二叉樹的直徑 力扣

2021-09-24 10:27:51 字數 736 閱讀 1525

題意理解

求二叉樹從乙個葉子到另乙個葉子的路徑最大值,必然經過根節點

問題分析

遞迴先計算子樹的深度,然後用左右子樹深度和+1

其他最大子樹不一定經過根結點。可以是任意乙個子樹的最大直徑。

鏈結

int diameterofbinarytree(treenode* root) 

void helper(treenode* root, int& depth, int& maxdiameter) //引數1:子樹,引數2:子樹深度,引數3:子樹直徑

int ldepth = 0, rdepth = 0;

helper(root -> left, ldepth, maxdiameter); //計算左子樹深度

helper(root -> right, rdepth, maxdiameter); //計算右子樹深度

depth = max(ldepth, rdepth) + 1; //得到子樹深度

maxdiameter = max(maxdiameter, ldepth + rdepth + 1); //得到子樹最大直徑 左右子樹深度和 + 根結點深度1

}

int diameterofbinarytree(treenode* root) 

int maxdepth(treenode* root, int& distance)

力扣 543 二叉樹的直徑

題目 給定一棵二叉樹,你需要計算它的直徑長度。一棵二叉樹的直徑長度是任意兩個結點路徑長度中的最大值。這條路徑可能穿過也可能不穿過根結點。示例 給定二叉樹 1 2 3 4 5 返回 3,它的長度是路徑 4,2,1,3 或者 5,2,1,3 注意 兩結點之間的路徑長度是以它們之間邊的數目表示。題解 pa...

力扣 543 二叉樹的直徑

求一棵二叉樹的直徑長度 任意兩個節點路徑長度中的最大值。例子 在這棵二叉樹中,直徑長度是3,路徑為 4 2 1 3 或者 5 2 1 3 從例子中我們可以看到,求二叉樹的直徑長度可以求左右子樹的深度,最後求和即可。而求左右子樹的深度可以用深度優先搜尋dfs。這條路徑可能穿過也可能不穿過根結點 def...

力扣 543 二叉樹的直徑

給定一棵二叉樹,你需要計算它的直徑長度。一棵二叉樹的直徑長度是任意兩個結點路徑長度中的最大值。這條路徑可能穿過也可能不穿過根結點。示例 給定二叉樹 1 2 3 4 5 返回 3,它的長度是路徑 4,2,1,3 或者 5,2,1,3 注意 兩結點之間的路徑長度是以它們之間邊的數目表示。definiti...