即二叉樹中相距最遠的兩個節點之間的距離。
遞迴解法:
(1)如果二叉樹為空,返回0,同時記錄左子樹和右子樹的深度,都為0
(2)如果二叉樹不為空,最大距離要麼是左子樹的最大距離,要麼是右子樹的最大距離,要麼是左子樹節點中到根節點的最大距離+右子樹節點中到根節點的最大距離,同時記錄左子樹和右子樹節點中到根節點的最大距離。
int getmaxdistance(binarytreenode *proot, int &maxleft, int &maxright)
int maxll, maxlr, maxrl, maxrr;
int maxdistleft, maxdistright;
if (proot->lchild != null)
else
if (proot->rchild != null)
else
return max(max(maxdistleft, maxdistright), maxleft + maxright);
}
二叉樹節點的最大距離
程式設計之美3.10節。完整 如下 view code 1 include 2 include 3 include 4 include 5 include 6 include 7 using namespace std 89 struct node 1018 19 20void createtree...
二叉樹節點間的最大距離
問題 從二叉樹節點 出發,可以向上或者向下走,但沿途的節點只能經過一次,當到達節點 時,路徑上的節點數叫做 到 的距離。基本思路 乙個以 為頭的樹上,最大的距離只可能來自以下三種情況 左子樹上的最大距離 右子樹上的最大距離 左子樹上離h.left最遠的距離 右子樹上離h.right最遠的距離 三個值...
程式設計之美 求二叉樹節點的最大距離
問題描述 把在二叉樹中,從乙個節點到另乙個節點的需要經過的邊數,定義為距離。求一棵二叉樹中,距離最遠的兩個節點之間的距離是多少?問題分析 最遠的節點可能出現兩種情況 1 位於根節點下面兩棵不同的子樹上,例如節點c和d 2 位於根節點下面同一棵子樹上,例如節點 f 和 i,他們位於b子樹上。這樣問題可...