根据二叉树的先序和中序求后序遍历
生活随笔
收集整理的這篇文章主要介紹了
根据二叉树的先序和中序求后序遍历
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
代碼如下:
#include <iostream> using namespace std; const int N = 1010; int pre[N], in[N], post[N];struct node {int w;node *l, *r;node (int w = 0, node *l = NULL, node *r = NULL): w(w), l(l), r(r) {} };void build(int l, int r, int &t, node *&root) {int flag = -1;for (int i = l; i <= r; i++) {if (in[i] == pre[t]) {flag = i;break;}}if (flag == -1)return ;root = new node(in[flag]);t++;if (flag > l)build(l, flag - 1, t, root->l);if (flag < r)build(flag + 1, r, t, root->r); }void post_order(node *root) {if (root != NULL) {post_order(root->l);post_order(root->r);cout << root->w << " ";} }int main() {int n;cin >> n;for (int i = 1; i <= n; i++)cin >> pre[i];for (int i = 1; i <= n; i++)cin >> in[i];int t = 1;node *root;build(1, n, t, root);post_order(root);return 0; }總結
以上是生活随笔為你收集整理的根据二叉树的先序和中序求后序遍历的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 挂中医科可以看什么病
- 下一篇: 最少硬币问题-dp