二叉樹節點之間的距離

2021-10-04 20:57:00 字數 897 閱讀 1128

題目描述

對二叉樹,計算任意兩個結點的最短路徑長度。

輸入

第一行輸入測試資料組數 t 第二行輸入 n , m 。 n 代表結點的個數, m 代表要查詢的資料組數。 接下來 n 行,每行輸入兩個數,代表1~ n 結點的孩子結點,如果沒有孩子結點則輸入-1,根節點為1。 接下來 m 行,每行輸入兩個數,代表要查詢的兩個結點。

輸出

每組測試資料輸出 m 行,代表查詢的兩個結點之間的最短路徑長度。

測試樣例

輸入

1

8 42 3

4 56 -1

-1 -1

-1 7

-1 -1

8 -1

-1 -1

1 64 6

4 58 1

輸出

242

4

#include

using

namespace std;

int fa[

1005];

intmain()

if(b!=-1

)}while

(m--

)while

(b)while

(!s1.

empty()

&&!s2.

empty()

&&s1.

top(

)==s2.

top())

cout

+s2.

size()

<}

二叉樹節點的最大距離

程式設計之美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...

求二叉樹節點的最大距離

即二叉樹中相距最遠的兩個節點之間的距離。遞迴解法 1 如果二叉樹為空,返回0,同時記錄左子樹和右子樹的深度,都為0 2 如果二叉樹不為空,最大距離要麼是左子樹的最大距離,要麼是右子樹的最大距離,要麼是左子樹節點中到根節點的最大距離 右子樹節點中到根節點的最大距離,同時記錄左子樹和右子樹節點中到根節點...

二叉樹節點間的最大距離

問題 從二叉樹節點 出發,可以向上或者向下走,但沿途的節點只能經過一次,當到達節點 時,路徑上的節點數叫做 到 的距離。基本思路 乙個以 為頭的樹上,最大的距離只可能來自以下三種情況 左子樹上的最大距離 右子樹上的最大距離 左子樹上離h.left最遠的距離 右子樹上離h.right最遠的距離 三個值...