刷題之路 二叉樹上最遠距離

2021-07-12 06:21:34 字數 379 閱讀 9355

從二叉樹的節點a出發,可以向上或者向下走,但沿途的節點只能經過一次,當到達節點b時,路徑上的節點數叫作a到b的距離。對於給定的一棵二叉樹,求整棵樹上節點間的最大距離。

最大距離不外乎兩種情況

1、左子樹或者右子樹特別龐大,最大距離出現在左子樹或右子樹兩個節點之間;

2、左右兩子樹節點數量大致平衡,則最大距離橫跨左右子樹,這種情況下必然是離頭結點的左右兩個子節點最遠的節點之間的距離

遍歷時不斷返回兩個引數,第乙個是左右子樹中節點的最大距離,第二個是左右子樹中某個孩子節點距離當前頭結點的最大距離,並根據這種返回值來最終確定最大距離

class longestdistance

vectorbacktree(treenode* root)

};

二叉樹結點最遠距離

給定二叉樹,求取該二叉樹多有節點中距離最遠的結點相隔的距離 以root為根節點的樹上,最大距離求取 情況一 root的左子樹上的最大距離 情況二 root的右子樹上的最大距離 情況三 root左子樹上距離root結點最遠的距離,加上root自身這個節點,再加上root右子樹上距離root右孩子最遠的...

求二叉樹兩節點的最遠距離

題目要求比較簡單,寫一程式求一棵二叉樹中相距最遠的兩個節點之間的距離。其實第一眼就能相當用遞迴是最簡單也是最直觀的 以當前節點v為根的子樹中兩節點的最遠距離有三種情況 1 距離最遠的兩個節點均在v的左子樹 2 距離最遠的兩個節點均在v的右子樹 3 距離最遠的兩個節點乙個在左子樹乙個在右子樹 或者v就...

(演算法)二叉樹兩個結點的最遠距離

求二叉樹兩個結點的最遠距離。二叉樹定義如下 class treenode 遍歷每個節點,找出以當前節點為根的最長路徑,然後找出所有最長路徑中的最大值。1 class node void longestpath 1 node proot,int maxlen int rightlen if proot...