【练习】树(Tree, UVa 548)给一棵点带权(权值各不相同)的二叉树的中序和后序遍历,找一个叶子使得它到根的路径上的权和最小。
生活随笔
收集整理的這篇文章主要介紹了
【练习】树(Tree, UVa 548)给一棵点带权(权值各不相同)的二叉树的中序和后序遍历,找一个叶子使得它到根的路径上的权和最小。
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
給一棵點帶權(權值各不相同,都是小于10000的正整數)的二叉樹的中序和后序遍歷,找一個葉子使得它到根的路徑上的權和最小。如果有多解,該葉子本身的權應盡量小。輸入中每兩行表示一棵樹,其中第一行為中序遍歷,第二行為后序遍歷。
樣例輸入:
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
個人理解:本質上還是自底向上建樹,且在build函數中最左邊下標始終不變為0,而每次新建一棵樹,p為中序遍歷得到的根節點下標,則p-1為根節點的下一個左孩子
stringstream s(line);
while (s >> x) a[n++] = x;
read_list函數用于將輸入的字符串寫入到數組中, 使用 string 對象來代替字符數組(snprintf方式),就避免緩沖區溢出的危險
相關使用示例:
stringstream sstream;
string strResult;
int nValue = 1000;
總結
以上是生活随笔為你收集整理的【练习】树(Tree, UVa 548)给一棵点带权(权值各不相同)的二叉树的中序和后序遍历,找一个叶子使得它到根的路径上的权和最小。的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【过程记录】springcloud配置使
- 下一篇: 【数据结构练习习题】java实现版(一)