DS樹 二叉樹之最大路徑

2021-10-01 14:56:09 字數 1394 閱讀 8173

題目描述

給定一顆二叉樹的邏輯結構(先序遍歷的結果,空樹用字元『0』表示,例如ab0c00d00),建立該二叉樹的二叉鏈式儲存結構

二叉樹的每個結點都有乙個權值,從根結點到每個葉子結點將形成一條路徑,每條路徑的權值等於路徑上所有結點的權值和。程式設計求出二叉樹的最大路徑權值。如下圖所示,共有4個葉子即有4條路徑,

路徑1權值=5 + 4 + 11 + 7 = 27 路徑2權值=5 + 4 + 11 + 2 = 22

路徑3權值=5 + 8 + 13 = 26 路徑4權值=5 + 8 + 4 + 1 = 18

可計算出最大路徑權值是27。

該樹輸入的先序遍歷結果為abcd00e000fg00h0i00,各結點權值為:

輸入第一行輸入乙個整數t,表示有t個測試資料

第二行輸入一棵二叉樹的先序遍歷,每個結點用字母表示

第三行先輸入n表示二叉樹的結點數量,然後輸入每個結點的權值,權值順序與前面結點輸入順序對應

以此類推輸入下一棵二叉樹

輸出每行輸出每棵二叉樹的最大路徑權值,如果最大路徑權值有重複,只輸出1個

樣例輸入

2

ab0c00d00

4 5 3 2 6

abcd00e000fg00h0i00

9 5 4 11 7 2 8 13 4 1

樣例輸出
11

27

#include #include using namespace std;

class binode

binode(char e):data(e),lchild(null),rchild(null){}

~binode()

friend class bitree;

};class bitree;

~bitree(){};

void createtree();

void getroad();

};void bitree::createtree(binode *&t)

else

t = null;

}void bitree::createtree()

void bitree::getroad(binode *t, int road)

}void bitree::getroad()

getroad(root,0);

cout<>t;

while (t--)

return 0;

}

DS樹 二叉樹之最大路徑(模板)

題目描述給定一顆二叉樹的邏輯結構 先序遍歷的結果,空樹用字元 0 表示,例如ab0c00d00 建立該二叉樹的二叉鏈式儲存結構 二叉樹的每個結點都有乙個權值,從根結點到每個葉子結點將形成一條路徑,每條路徑的權值等於路徑上所有結點的權值和。程式設計求出二叉樹的最大路徑權值。如下圖所示,共有4個葉子即有...

二叉樹最大路徑和 python 二叉樹最大路徑和

1.題目描述 輸入乙個二叉樹層次遍歷的結果,輸出這個二叉樹最大路徑和。路徑不一定從根節點開始和葉子節點結束。只要是連續的路徑就可以。如輸入 10,9,20,null,null,15,7 109 20 15 7 輸出 42 2.首先將乙個陣列還原成乙個二叉樹。然後根絕二叉樹的根節點返回最大路徑和。cl...

二叉樹最大路徑之和

binary tree maximum path sum 解題思路 這道題是求樹的路徑和的題目,不過和平常不同的是這裡的路徑不僅可以從根到某乙個結點,而且路徑可以從左子樹某乙個結點,然後到達右子樹的結點,就像題目中所說的可以起始和終結於任何結點。在這裡樹沒有被看成有向圖,而是被當成無向圖來尋找路徑。...