題意理解
求二叉樹從乙個葉子到另乙個葉子的路徑最大值,必然經過根節點
問題分析
遞迴先計算子樹的深度,然後用左右子樹深度和+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...