求一个二叉树中任意两个节点间的最大距离,两个节点的距离的定义是这两个节点间边
的个数,
比如某个孩子节点和父节点间的距离是1,和相邻兄弟节点间的距离是2,优化时间空间复杂度。
/*
1.求一个二叉树中任意两个节点间的最大距离,两个节点的距离的定义是这两个节点间边
的个数,
比如某个孩子节点和父节点间的距离是1,和相邻兄弟节点间的距离是2,优化时间空间复
杂度。
*/
void MaxTreeLength(TreeNode *root,int &maxlen)
{
if(root==NULL)
return;
int lefth=TreeDepth(root->left);
int righth=TreeDepth(root->right);
if(lefth+righth>maxlen)
maxlen=lefth+righth;
MaxTreeLength(root->left,maxlen);
MaxTreeLength(root->right,maxlen);
}
int MaxTreeLength(TreeNode *root)
{
int maxlen=numeric_limits<int>::min();
MaxTreeLength(root,maxlen);
return maxlen;
}
void MaxTreeLengthTest()
{
TreeNode* root=NULL;
cout<<"make tree"<<endl;
MakeTree(root);
cout<<"the tree : ";
LevelOrderTraverse(root);
cout<<"the tree : "<<endl;
LevelOrderTraverse1(root);
int maxlen=MaxTreeLength(root);
cout<<"max len in tree : "<<maxlen<<endl;
}