题目:
求二叉树中节点的最大距离...
如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的,
我们姑且定义"距离"为两节点之间边的个数。
写一个程序,
求一棵二叉树中相距最远的两个节点之间的距离
我觉得相隔最远的 应该是左子树最深的 和 右子树最深的结点之间
所以转变为求左子树深度 和 右子树深度 最长距离为左右子树深度之和
int TreeDepth(BinaryTreeNode* pRoot)
{
if(pRoot==NULL) return 0;
int left = TreeDepth(pRoot->m_left);
int right = TreeDepth(pRoot->m_right);
return (left>right)?(left+1):(right+1);
}
但是这种想法是错误的,如果树是这样的
a
/
b
/ \