假设前序  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

根据前序和中序 构造二叉树相关推荐

  1. 根据前序和中序构造整个二叉树

    根据前序和中序构造整个二叉树 前序遍历:根 左 右 中序遍历:左 根 右 先根据前序遍历,得到根节点3,然后看中序遍历,可以知道9是3的左孩子[15,20,7]是3的右孩子 再去先序遍历的到9,再到中 ...

  2. c语言编程实现二叉树的镜像,C/C++知识点之C++实现利用(前序和中序生成二叉树)以及(二叉树的镜像)...

    本文主要向大家介绍了C/C++知识点之C++实现利用(前序和中序生成二叉树)以及(二叉树的镜像),通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助. #include #include ...

  3. 根据前序、中序构建二叉树

    题目描述 二叉树的前序.中序.后序遍历的定义: 前序遍历:对任一子树,先访问跟,然后遍历其左子树,最后遍历其右子树: 中序遍历:对任一子树,先遍历其左子树,然后访问根,最后遍历其右子树: 后序遍历:对 ...

  4. 用前序和中序重建二叉树 python

    程序实现了用二叉树的前序遍历序列和中序遍历序列重建二叉树,代码用python实现. 首先定义二叉树节点的类: 1 class TreeNode: 2 def __init__(self, x): 3 ...

  5. 先序和中序构造二叉树

    本题目要求用先序序列和中序序列构造一棵二叉树(树中结点个数不超过10个),并输出其后序序列. 输入格式: 在第一行中输入元素个数. 第二行中输入先序序列,用空格分隔. 第三行中输入中序序列,用空格分隔 ...

  6. 【LeetCode105和106】先序和中序构造二叉树(106是中后序构树)

    1.题目 2.思路 做过很多次了,由于中序序列是"左中右"遍历顺序,而先序序列是"中左右"遍历序列,所以可以根据先序序列的第一个元素确定当前的根结点,再遍历一次 ...

  7. Java——从前序与中序遍历序列构造二叉树

    文章目录 前言 一.已知前序和中序构造二叉树,并层次输出 二.问题分析 1.构造二叉树 2.层次遍历二叉树 三.总结 前言 算法分析--分治法 一.已知前序和中序构造二叉树,并层次输出 二.问题分析 ...

  8. 二叉树 中序遍历 python_leetcode No.105 从前序与中序遍历序列构造二叉树

    题目链接: 从前序与中序遍历序列构造二叉树 - 力扣(LeetCode)​leetcode-cn.com 题目描述: 根据一棵树的前序遍历与中序遍历构造二叉树,可以假设树中没有重复的元素. 示例: 前 ...

  9. 数据结构---前序和中序遍历的二叉树序列还原二叉树

    数据结构-前序和中序遍历的二叉树序列还原二叉树 代码: #include<stdio.h> #include<stdlib.h> typedef struct bstTree ...

最新文章

  1. sql server 链接到oracle库,读取对应信息
  2. HTML <dfn> 标签的简单介绍
  3. 设计模式六大原则 图
  4. 前端学习(611):js组成
  5. AVCaptureDevice的几个属性
  6. spring里restTemplate向目的URL发送post请求
  7. catia工程制图投影,弹窗提示:没有可投影的可用3d元素
  8. eclipse tomcat lomboz的安装配置说明
  9. 社会工程学攻击选项是_什么是社会工程学,如何避免?
  10. R语言读取(加载)txt格式数据为dataframe、依据学号字段从dataframe随机抽取10位同学的数据
  11. 将文件中的单词及翻译导入数据库
  12. 玩转流量,天下无锅——IT运维人员的九阳神功(上)| 技术分享
  13. 蜂窝物联网终端用户数比上年末净增1.22亿户,而上年同期(2020.1~5)净增6886万户,同比增长77%
  14. 【AI SoC】全志R329 高算力低功耗,当下智能音箱的最优解?
  15. php校花评比排名,投票|佛山“校花”颜值大比拼,快来选出你最爱的!
  16. 美通社企业新闻汇总 | 2019.3.1 | 东京是亚洲商务休闲最佳目的地;贺恩霆担任赛诺菲中国区总裁...
  17. office2003、2010、2013下载资源
  18. 数据挖掘实践 —— OneR 分类算法
  19. SAMSUNG S3C2440的简易BootLoader ㈢
  20. 海思Hi3516CV200_Camera芯片产品规格书

热门文章

  1. Python利用描述符进行属性访问控制,完成属性数据类型强制定义(如C语言)、属性读写及删除操作
  2. Ubuntu su: authentication failure切换用户失败
  3. JAVA正则表达式分析爬虫数据
  4. oracle新增表单,Oracle Retail(Retek)中Form生成列表方法总结
  5. mysql用户授权开发者_Mysql添加用户与授权
  6. iis php 无法访问此网站_IIS 配置phpmanage
  7. python数据结构的列表_Python自带数据结构 列表(list)
  8. jquery页面跳转带cookie_搭建谷歌浏览器无头模式抓取页面服务,laravelgt;phpgt;pythongt;docker...
  9. 有趣的html代码_千万别惹程序员,否则会在代码注释里,告诉这家公司有多坑...
  10. python输出函数使用_python基本输入输出函数