//后序 求 每个节点最远距离, 倒着遍历, 只遍历了一遍 O( N )
//如果从上往下遍历 则 O( N*N )
int GetMaxPathLen( Node* root, int& maxLen ) //maxLen初始值传0
{
//别用 全局变量(存在线程安全问题)
if ( NULL == root )
return 0;
int left = GetMaxPathLen( root->_left, maxLen );
int right = GetMaxPathLen( root->_right, maxLen );
if ( left + right > maxLen )
maxLen = left + right;
//返回高度
return (left>right? left:right) + 1;
}
//运行结束后的 maxLen值 就是树中最远的两个节点的距离
求二叉树中最远的两个节点间的距离
最新推荐文章于 2022-12-29 17:01:10 发布