L2 006 樹的遍歷

2021-08-17 01:10:55 字數 950 閱讀 4585

題意:中序和後序重建二叉樹,輸出前序。

題解:我之前寫了一篇部落格,很詳細的教學。大家可以看一下:

我這邊直接上ac**:

#include

#include

#include

using

namespace std;

const

int inf = -99999999; // 節點不存在的時候賦值給節點

const

int n = 10010;

int in[n];

int post[n];

int pos;

struct node ;

node node[n];

void input(int a, int n)

}// 重建以第 n 個節點為根節點的二叉樹

void rec(int l, int r, int n)

int root = post[pos--]; // 獲取後續遍歷中節點的數值

node[n].w = root;

node[n].l = 2*n; // 左子樹所在陣列下標

node[n].r = 2*n+1; // 右子樹所在陣列下標

int m = find(in, in+r, root) - in;

rec(m+1, r, 2*n+1); // 因為是後序遍歷,所以先重建右子樹

rec(l, m, 2*n); // 在重建左子樹

}// 使用 c++ stl 模板提供的佇列資料結構

void print()

cout << node[index].w;

que.push(node[index].l);

que.push(node[index].r);}}

}int main()

L2 006 樹的遍歷

時間限制 400 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 陳越 給定一棵二叉樹的後序遍歷和中序遍歷,請你輸出其層序遍歷的序列。這裡假設鍵值都是互不相等的正整數。輸入格式 輸入第一行給出乙個正整數n 30 是二叉樹中結點的個數。第二行給出其後序遍歷...

L2 006 樹的遍歷

時間限制 400 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 陳越 給定一棵二叉樹的後序遍歷和中序遍歷,請你輸出其層序遍歷的序列。這裡假設鍵值都是互不相等的正整數。輸入格式 輸入第一行給出乙個正整數n 30 是二叉樹中結點的個數。第二行給出其後序遍歷...

L2 006 樹的遍歷

給定一棵二叉樹的後序遍歷和中序遍歷,請你輸出其層序遍歷的序列。這裡假設鍵值都是互不相等的正整數。輸入第一行給出乙個正整數n 30 是二叉樹中結點的個數。第二行給出其後序遍歷序列。第三行給出其中序遍歷序列。數字間以空格分隔。在一行中輸出該樹的層序遍歷的序列。數字間以1個空格分隔,行首尾不得有多餘空格。...