//后序 求 每个节点最远距离, 倒着遍历, 只遍历了一遍 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值 就是树中最远的两个节点的距离求二叉树中最远的两个节点间的距离
最新推荐文章于 2024-02-10 18:12:55 发布
本文介绍了一种使用后序遍历算法高效计算二叉树中任意两个节点间最长路径的方法。通过仅遍历一遍树的方式实现了O(N)的时间复杂度,避免了传统从根节点开始遍历可能导致的O(N*N)时间复杂度问题。
1268

被折叠的 条评论
为什么被折叠?



