根据前序和中序 构造二叉树
假设前序 char pstr[] = "abdcef" 中序为 char mstr[] = "dbaecf" 构造该二叉树
递归思想,首先前序遍历的第一个一定是根结点,然后从中序遍历中找到根节点所在的位置,这样
就将中序分为左右子树的两部分,比如,首先找到先序的第一个'a', 在中序遍历中的位置,那么
'db' 'ecf' 就分别为'a' 的左子树和右子树, 然后继续递归求解即可;
void rebuild(char* ps,char* ms,int len,Node* &temp) {if (!ps || !ms) //若为空 则返回 {return ;}temp = new Node; //若不为空,则建立一个新节点 读取前序遍历的第一个temp->val = *ps; temp->lchild = NULL;temp->rchild = NULL;if (len == 1) //若该节点为树的最后一个 返回 {return;}int left_len = 0,right_len = 0;char* p_head = ms;while ((*p_head) != *ps) //求根节点在中序遍历中的位置 {p_head++;left_len++;}right_len = len - 1 - left_len;if (left_len > 0) //分别构造左子树和右子树rebuild(ps+1,ms,left_len,temp->lchild);if (right_len > 0)rebuild(ps + left_len + 1,p_head + 1,right_len,temp->rchild); }
转载于:https://www.cnblogs.com/itachi7/archive/2012/09/04/2671168.html
根据前序和中序 构造二叉树相关推荐
- 根据前序和中序构造整个二叉树
根据前序和中序构造整个二叉树 前序遍历:根 左 右 中序遍历:左 根 右 先根据前序遍历,得到根节点3,然后看中序遍历,可以知道9是3的左孩子[15,20,7]是3的右孩子 再去先序遍历的到9,再到中 ...
- c语言编程实现二叉树的镜像,C/C++知识点之C++实现利用(前序和中序生成二叉树)以及(二叉树的镜像)...
本文主要向大家介绍了C/C++知识点之C++实现利用(前序和中序生成二叉树)以及(二叉树的镜像),通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助. #include #include ...
- 根据前序、中序构建二叉树
题目描述 二叉树的前序.中序.后序遍历的定义: 前序遍历:对任一子树,先访问跟,然后遍历其左子树,最后遍历其右子树: 中序遍历:对任一子树,先遍历其左子树,然后访问根,最后遍历其右子树: 后序遍历:对 ...
- 用前序和中序重建二叉树 python
程序实现了用二叉树的前序遍历序列和中序遍历序列重建二叉树,代码用python实现. 首先定义二叉树节点的类: 1 class TreeNode: 2 def __init__(self, x): 3 ...
- 先序和中序构造二叉树
本题目要求用先序序列和中序序列构造一棵二叉树(树中结点个数不超过10个),并输出其后序序列. 输入格式: 在第一行中输入元素个数. 第二行中输入先序序列,用空格分隔. 第三行中输入中序序列,用空格分隔 ...
- 【LeetCode105和106】先序和中序构造二叉树(106是中后序构树)
1.题目 2.思路 做过很多次了,由于中序序列是"左中右"遍历顺序,而先序序列是"中左右"遍历序列,所以可以根据先序序列的第一个元素确定当前的根结点,再遍历一次 ...
- Java——从前序与中序遍历序列构造二叉树
文章目录 前言 一.已知前序和中序构造二叉树,并层次输出 二.问题分析 1.构造二叉树 2.层次遍历二叉树 三.总结 前言 算法分析--分治法 一.已知前序和中序构造二叉树,并层次输出 二.问题分析 ...
- 二叉树 中序遍历 python_leetcode No.105 从前序与中序遍历序列构造二叉树
题目链接: 从前序与中序遍历序列构造二叉树 - 力扣(LeetCode)leetcode-cn.com 题目描述: 根据一棵树的前序遍历与中序遍历构造二叉树,可以假设树中没有重复的元素. 示例: 前 ...
- 数据结构---前序和中序遍历的二叉树序列还原二叉树
数据结构-前序和中序遍历的二叉树序列还原二叉树 代码: #include<stdio.h> #include<stdlib.h> typedef struct bstTree ...
最新文章
- sql server 链接到oracle库,读取对应信息
- HTML <dfn> 标签的简单介绍
- 设计模式六大原则 图
- 前端学习(611):js组成
- AVCaptureDevice的几个属性
- spring里restTemplate向目的URL发送post请求
- catia工程制图投影,弹窗提示:没有可投影的可用3d元素
- eclipse tomcat lomboz的安装配置说明
- 社会工程学攻击选项是_什么是社会工程学,如何避免?
- R语言读取(加载)txt格式数据为dataframe、依据学号字段从dataframe随机抽取10位同学的数据
- 将文件中的单词及翻译导入数据库
- 玩转流量,天下无锅——IT运维人员的九阳神功(上)| 技术分享
- 蜂窝物联网终端用户数比上年末净增1.22亿户,而上年同期(2020.1~5)净增6886万户,同比增长77%
- 【AI SoC】全志R329 高算力低功耗,当下智能音箱的最优解?
- php校花评比排名,投票|佛山“校花”颜值大比拼,快来选出你最爱的!
- 美通社企业新闻汇总 | 2019.3.1 | 东京是亚洲商务休闲最佳目的地;贺恩霆担任赛诺菲中国区总裁...
- office2003、2010、2013下载资源
- 数据挖掘实践 —— OneR 分类算法
- SAMSUNG S3C2440的简易BootLoader ㈢
- 海思Hi3516CV200_Camera芯片产品规格书
热门文章
- Python利用描述符进行属性访问控制,完成属性数据类型强制定义(如C语言)、属性读写及删除操作
- Ubuntu su: authentication failure切换用户失败
- JAVA正则表达式分析爬虫数据
- oracle新增表单,Oracle Retail(Retek)中Form生成列表方法总结
- mysql用户授权开发者_Mysql添加用户与授权
- iis php 无法访问此网站_IIS 配置phpmanage
- python数据结构的列表_Python自带数据结构 列表(list)
- jquery页面跳转带cookie_搭建谷歌浏览器无头模式抓取页面服务,laravelgt;phpgt;pythongt;docker...
- 有趣的html代码_千万别惹程序员,否则会在代码注释里,告诉这家公司有多坑...
- python输出函数使用_python基本输入输出函数