根据二叉树的先序序列和中序序列还原二叉树并打印后序序列
来源:互联网 发布:中小学信息化数据库 编辑:程序博客网 时间:2024/04/30 23:55
#include<stdio.h>#include<stdlib.h>#include<iostream>using namespace std;struct Node{int value;Node *left;Node *right;Node(int value){this->value = value;left = right = NULL;}};bool bNotTree = false;Node* RebuildTree(int *preOrder, int *inOrder, int length){if (length <= 0)return NULL;if (length == 1){if (*preOrder != *inOrder){bNotTree = true;return NULL;}return new Node(*preOrder);}int i;for (i = 0; *preOrder != inOrder[i] && i < length; ++i);if (i == length){bNotTree = true;return NULL;}Node *root = new Node(*preOrder);root->left = RebuildTree(preOrder+1,inOrder,i);root->right = RebuildTree(preOrder + i + 1, inOrder + i + 1,length-i-1);return root;}void PrintTree(Node* root){if (root){PrintTree(root->left);PrintTree(root->right);cout << root->value << " ";}}int main(){int preOrder[1000];int inOrder[1000];int n;while (cin >> n){int i;bNotTree = false;for (i = 0; i < n; ++i){cin >> preOrder[i];}for (i = 0; i < n; ++i){cin >> inOrder[i];}Node *tmp = RebuildTree(preOrder, inOrder, n);if (bNotTree)cout << "No" << endl;else{PrintTree(tmp);cout << endl;}}return 0;}
2 0
- 根据二叉树的先序序列和中序序列还原二叉树并打印后序序列
- 二叉树:根据二叉树的先序遍历序列和中序遍历序列,输出该二叉树的后序遍历序列
- 根据中序序列和前序序列,求二叉树的后序序列
- 根据二叉树的前序序列和中序序列得到后序序列
- 算法进化历程之“根据二叉树的先序和中序序列输出后序序列”
- 先序序列和中序序列构造二叉树,中序序列和后序序列构造二叉树
- 根据二叉树的先序与中序序列或后续与中序序列恢复二叉树并图像化打印(c语言)
- 根据先序和中序序列求二叉树
- 根据先序序列和中序序列建立树并求其后序序列
- 由先序序列/后序序列和中序序列构造二叉树
- 根据二叉树的先序和中序序列画出二叉树的方法
- Java由先序序列和中序序列还原二叉树
- 根据先序序列和中序序列构造二叉树
- 根据先序序列和中序序列重建二叉树
- 根据先序遍历序列和中序遍历序列重建二叉树
- 根据先序序列和中序序列创建二叉树
- 转载-根据先序序列和中序序列创建二叉树
- 给出先序和中序序列,还原二叉树的规律方法
- xml写法
- Java面向对象 网络编程 上
- Java面向对象 网络编程 下
- 提升工作效率--小工具ditto(剪贴板增强软件)
- Java面向对象 正则表达式
- 根据二叉树的先序序列和中序序列还原二叉树并打印后序序列
- freemarker字符串转换成日期和时间
- 在zend framework框架中try{}catch(Exception e){}的跳转问题
- 纯javascript实现进度条-------Day22
- 系统密码忘了怎么办,登录破解支招
- poj3069 Saruman's Army
- 升序输出三个整数
- VS-2012 Exception-pinvokestackimbalance
- java多线程的知识点总结