【练习】树(Tree, UVa 548)给一棵点带权(权值各不相同)的二叉树的中序和后序遍历,找一个叶子使得它到根的路径上的权和最小。
給一棵點(diǎn)帶權(quán)(權(quán)值各不相同,都是小于10000的正整數(shù))的二叉樹(shù)的中序和后序遍歷,找一個(gè)葉子使得它到根的路徑上的權(quán)和最小。如果有多解,該葉子本身的權(quán)應(yīng)盡量小。輸入中每?jī)尚斜硎疽豢脴?shù),其中第一行為中序遍歷,第二行為后序遍歷。
樣例輸入:
3 2 1 4 5 7 6
3 1 2 5 6 7 4
7 8 11 3 5 16 12 18
8 3 11 7 16 18 12 5
255
255
樣例輸出:
1
3
255
個(gè)人理解:本質(zhì)上還是自底向上建樹(shù),且在build函數(shù)中最左邊下標(biāo)始終不變?yōu)?,而每次新建一棵樹(shù),p為中序遍歷得到的根節(jié)點(diǎn)下標(biāo),則p-1為根節(jié)點(diǎn)的下一個(gè)左孩子
stringstream s(line);
while (s >> x) a[n++] = x;
read_list函數(shù)用于將輸入的字符串寫(xiě)入到數(shù)組中, 使用 string 對(duì)象來(lái)代替字符數(shù)組(snprintf方式),就避免緩沖區(qū)溢出的危險(xiǎn)
相關(guān)使用示例:
stringstream sstream;
string strResult;
int nValue = 1000;
總結(jié)
以上是生活随笔為你收集整理的【练习】树(Tree, UVa 548)给一棵点带权(权值各不相同)的二叉树的中序和后序遍历,找一个叶子使得它到根的路径上的权和最小。的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【过程记录】springcloud配置使
- 下一篇: 【数据结构练习习题】java实现版(一)