問題描述:
節點間的距離定義: 節點之間的路徑長度。
問題分析:
二叉樹中最大的路徑長度有三種情況:
1. 最大路徑長度出現在左子樹中
2. 最大路徑長度出現在右子樹中
3. 最大路徑長度由根節點、右子樹中的最深葉子節點、左子樹中的最深葉子節點構成
示例代碼:
int maxDistanc(TreeNode *root, int & height)
{
if (!root || (!root->left && !root->right))
{height = 0; return 0;}
int hl, hr, maxleft, maxright;
maxleft = maxDistance(root->left, hl);
maxright = maxDistance(root->right, hr);
return max(max(maxleft, maxright), hl + hr + 1 + 1);
}