根据先序序列与中序序列构建二叉树
来源:互联网 发布:vb.net 多行注释 编辑:程序博客网 时间:2024/06/05 23:01
算法如下:
1)先在先序序列中找到根结点,
2)在中序序列中找到根结点位置,(可以将二叉树分为左子树和右子树)
3)用同样的办法构造左子树
4)用同样的办法构造右子树。
//根据先序序列与中序序列构建二叉树BinaryTree* Pre_In_Build(char* pre ,char* in, int size){ if(!pre || !in || size < 0){ cout<<"输入出错!"<<endl; return NULL; } int root_index = 0; //寻找根结点 for(root_index = 0 ; root_index < size ; root_index++){ if(in[root_index] == pre[0]){ break; }else{ continue; } } if(root_index == size){ cout<<"先序序列与中序序列不匹配!"<<endl; return NULL; } //创建根结点 BinaryTree* root = this->Creat_Node(pre[0]); //递归构建左子树 if(root_index > 0){ root->lchild = this->Pre_In_Build(pre+1,in,root_index); } //递归构建右子树 if(size - root_index - 1 > 0){ root->rchild = this->Pre_In_Build(pre+root_index+1,in+1+root_index,size-root_index-1); } return root;}void set(char ch){ this->data = ch; this->lchild = this->rchild = NULL;}//创建根节点的函数 BinaryTree* Creat_Node(char ch){ BinaryTree* root; root = new BinaryTree; root->set(ch); return root;}
对于二叉树的遍历算法可以详见我的另一篇博客:
http://blog.csdn.net/qq_30091945/article/details/77531651
阅读全文
1 0
- 根据先序序列与中序序列构建二叉树
- 《剑指offer》根据先序序列与中序序列重建二叉树-Java
- 根据先序和中序序列求二叉树
- 根据中序序列与后序序列构建二叉树
- 先序序列构建二叉树
- 根据先序与中序遍历序列重构二叉树;
- 根据二叉树的先序序列和中序序列还原二叉树并打印后序序列
- 根据先序序列和中序序列构造二叉树
- 根据先序序列和中序序列重建二叉树
- 根据先序遍历序列和中序遍历序列重建二叉树
- 根据先序序列和中序序列创建二叉树
- 转载-根据先序序列和中序序列创建二叉树
- 根据二叉树的先序与中序序列或后续与中序序列恢复二叉树并图像化打印(c语言)
- 根据二叉树的先序和中序序列画出二叉树的方法
- 给出先序序列,中序序列恢复二叉树
- 已知先序序列、中序序列创建二叉树
- 二叉树:根据二叉树的先序遍历序列和中序遍历序列,输出该二叉树的后序遍历序列
- 给定中序-先序,中序-后序序列构建二叉树的算法
- JavaMail邮件开发(三)
- UVa 11809 Floating-Point Numbers
- 左旋转字符串
- struts2获取ServletAPI
- python实践小程序
- 根据先序序列与中序序列构建二叉树
- c#Invoke和BeginInvoke的区别
- 漏洞银行/逆向工程学习日记(4)-跳转指令&指令跳转原理
- hdu 6180
- opengl相关学习资料
- Python dataframe.pivot()
- kali2.0的ssh
- Oracle 内存里的 SGA是如何构成的呢又起到什么作用
- 发送post请求到https的url