548 Tree 遞迴遍歷

2021-07-27 16:51:11 字數 797 閱讀 1373

樹的遞迴遍歷

先序遍歷:t=t(根)+t(左)+t(右);

中序遍歷:t=t(左)+t(根)+t(右);

後序遍歷:t=t(左)+t(右)+t(根);

以上遵循遞迴的執行方式每最深層返回值即對應 遍歷

哎,遞迴,,,,,

表示不太懂,很難想到這裡,,,看紫書debug才慢慢懂,心塞塞,再多看幾次練幾次應該就會好點吧,遞迴一直是弱項

#include#include#include#includeusing namespace std;

// 因為各個結點的權值各不相同且都是正整數,直接用權值作為結點編號

const int maxv = 10000 + 10;

int in_order[maxv], post_order[maxv], lch[maxv], rch[maxv];

int n;

bool read_list(int* a)

// 把in_order[l1..r1]和post_order[l2..r2]建成一棵二叉樹,返回樹根

int build(int l1, int r1, int l2, int r2)

int best, best_sum; // 目前為止的最優解和對應的權和

void dfs(int u, int sum)

} if(lch[u]) dfs(lch[u], sum);

if(rch[u]) dfs(rch[u], sum);

}int main()

return 0;

}

Tree UVA 548(二叉樹遞迴遍歷)

題目大意 給一顆點帶權 權值各不相同,都是小於10000的正整數 的二叉樹的中序遍歷和後序遍歷,找乙個葉子結點使得它到根的路徑上的權值和最小。如果有多個解,該葉子本身的權值應盡量小。輸入中每兩行表示一棵樹,其中第一行為中序遍歷,第二行為後續遍歷。看 include include include i...

遞迴在遍歷檔案Tree中的應用

此程式用於結構化輸出檔案各個層級,以及計算檔案整個的大小 計算檔案長度 輸出檔案樹 public class ciotext class filetree public filetree public long getlen public void setlen long len public vo...

二叉樹遞迴遍歷 UVa548樹

題目 給一棵點帶權 權值各不相同,都是小於10000的正整數 的二叉樹的中序和後序遍歷,找乙個葉子使得它到根的路徑上的權值和最小。如果有多解,該葉子本身的權應盡量小。輸出中每兩行表示一棵樹,其中第一行為中序遍歷,第二行為後序遍歷。樣例輸入 3 2 1 4 5 7 6 3 1 2 5 6 7 4 7 ...