題目鏈結
給定一顆節點帶權的二叉樹的中序遍歷序列和後序遍歷序列,要求找出葉子節點中到根的路徑上的權和最小的節點。
注:1. 所有節點的權值都不同
2. 如果權和最小的葉子節點有多個,輸出其中權值最小的。
題目思路:
首先根據後序遍歷序列和中序遍歷序列構建該二叉樹。
從根節點進行dfs遍歷整棵樹,找到符合條件的葉子節點。
**如下:
#include
#include
#include
using
namespace std;
const
int maxn =
10000+10
;int in_order[maxn]
,post_order[maxn]
,lch[maxn]
,rch[maxn]
;// 使用兩個陣列構建二叉樹
int n,best,best_sum;
bool
read_list
(int
*a)int
build
(int l1,
int r1,
int l2,
int r2)
void
dfs(
int v,
int sum)}if
(lch[v]
)dfs
(lch[v]
,sum);if
(rch[v]
)dfs
(rch[v]
,sum);}
intmain()
return0;
}
二叉樹遞迴遍歷 UVa548樹
題目 給一棵點帶權 權值各不相同,都是小於10000的正整數 的二叉樹的中序和後序遍歷,找乙個葉子使得它到根的路徑上的權值和最小。如果有多解,該葉子本身的權應盡量小。輸出中每兩行表示一棵樹,其中第一行為中序遍歷,第二行為後序遍歷。樣例輸入 3 2 1 4 5 7 6 3 1 2 5 6 7 4 7 ...
UVa 548 二叉樹的遞迴遍歷 dfs)
題意 給一顆點帶權 權值各不相同,都是小於10000的正整數 的二叉樹的中序和後序遍歷,找乙個葉子使得它到根的路徑上的權和最小。如果有多解,該葉子本身的權應盡量小。輸入中每兩行表示一棵樹,其中第一行為中序遍歷,第二行為後序遍歷。首先介紹下二叉樹的三種遍歷 首先我想先改變這幾個遍歷的名字 前根序遍歷,...
第十六題 UVA548 樹 Tree
題意翻譯 輸入乙個二叉樹的中序和後序遍歷,請你輸出乙個葉子節點,該葉子節點到根的數值總和最小,且這個葉子是編號最小的那個。輸入 您的程式將從輸入檔案中讀取兩行 直到檔案結尾 第一行是樹的中序遍歷值序列,第二行是樹的後序遍歷值序列。所有值將不同,大於零且小於或等於10000.二叉樹的節1 n 1000...