題意:中序和後序重建二叉樹,輸出前序。
題解:我之前寫了一篇部落格,很詳細的教學。大家可以看一下:
我這邊直接上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個空格分隔,行首尾不得有多餘空格。...