根据中序序列与后序序列构建二叉树
来源:互联网 发布:数据库编辑器 编辑:程序博客网 时间:2024/06/15 17:02
算法如下:
1)先在后序序列中找到根结点,
2)在中序序列中找到根结点位置,(可以将二叉树分为左子树和右子树)
3)用同样的办法构造左子树 。
4)用同样的办法构造右子树。
算法如下:
BinaryTree* Creat_Node(char ch){ BinaryTree* root; root = new BinaryTree; root->data = ch; root->lchild = root->rchild = NULL; return root;}BinaryTree* Mid_Post_Create_Pre(char* mid,char*post,int N){ if(!mid||!post||N<0){ cout<<"输入出错!"<<endl; return NULL; } int root_index = 0; for(root_index = 0 ; root_index < N ; root_index++){ if(mid[root_index] == post[N-1]){ break; } } if(root_index == N){ cout<<"中序序列与后序序列不匹配!"<<endl; return NULL; } BinaryTree* root = this->Creat_Node(post[N-1]); if(root_index > 0){ root->lchild = root->Mid_Post_Create_Pre(mid,post,root_index); } if(N-root_index-1 > 0){ root->rchild = root->Mid_Post_Create_Pre(mid+root_index+1,post+root_index,N-root_index-1); } return root; }
关于二叉树构建与遍历请详见我的之前的博客:二叉树的构建及其遍历算法
对于根据先序序列与中序序列构建二叉树的算法也请详见我之前的博客:
根据先序序列与中序序列构建二叉树
阅读全文
1 0
- 根据中序序列与后序序列构建二叉树
- 根据先序序列与中序序列构建二叉树
- 根据树的后序和中序序列或者前序和中序序列构建二叉树,
- 根据中序序列和前序序列,求二叉树的后序序列
- 根据二叉树的前序序列和中序序列得到后序序列
- 根据二叉树的先序序列和中序序列还原二叉树并打印后序序列
- 二叉树序列---根据后序和中序系列或前序和中序序列构造二叉树
- 根据二叉树先序中序序列输出后序
- 树的学习——(递归构建二叉树、递归非递归前序中序后序遍历二叉树、根据前序序列、中序序列构建二叉树)
- 《剑指offer》根据先序序列与中序序列重建二叉树-Java
- 二叉树:根据二叉树的先序遍历序列和中序遍历序列,输出该二叉树的后序遍历序列
- 面试题6:根据前序和中序序列构建二叉树(Leetcode-106)
- 给定中序-先序,中序-后序序列构建二叉树的算法
- 根据二叉树的前序遍历序列和中序遍历序列求二叉树的后序遍历序列
- 算法进化历程之“根据二叉树的先序和中序序列输出后序序列”
- 根据前序/后序/层序+中序遍历序列建立二叉树
- [LeetCode] 根据中序和后序序列重建二叉树
- 根据前序中序序列构建二叉树
- css的div垂直居中的方法,百分比div垂直居中
- 第八周项目2 顺序串算法
- 任务分配问题(回溯算法)
- JavaScript正则中\1\2的作用
- c++链表
- 根据中序序列与后序序列构建二叉树
- 数据库创建表失败原因
- 新的开始
- phantomjs的使用
- mysql中存取数据解决乱码问题(idea)
- Servlet生命周期
- gulp入门(2)
- 基于路由切换信息的过渡动效(2)
- angular.js 双向数据绑定,依赖注入