问题描述:
节点间的距离定义: 节点之间的路径长度。
问题分析:
二叉树中最大的路径长度有三种情况:
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);
}