UVA 548 樹 遞迴典型

2021-10-05 21:37:09 字數 931 閱讀 2379

題目鏈結

給定一顆節點帶權的二叉樹的中序遍歷序列和後序遍歷序列,要求找出葉子節點中到根的路徑上的權和最小的節點。

注: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...