題目描述
給定一顆二叉樹的邏輯結構(先序遍歷的結果,空樹用字元『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
1127
#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 解題思路 這道題是求樹的路徑和的題目,不過和平常不同的是這裡的路徑不僅可以從根到某乙個結點,而且路徑可以從左子樹某乙個結點,然後到達右子樹的結點,就像題目中所說的可以起始和終結於任何結點。在這裡樹沒有被看成有向圖,而是被當成無向圖來尋找路徑。...