//后序 求 每个节点最远距离, 倒着遍历, 只遍历了一遍 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值 就是树中最远的两个节点的距离
求二叉树中最远的两个节点间的距离
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.