R8-1 中序和后序创建二叉树
已知一棵二叉树的中序遍历序列为DGBAECHIF,后序遍历序列为GDBEIHFCA。
(1)试画出该二叉树;
(2)试画出该二叉树对应的森林;
1.首先看后序遍历得知A是根节点,然后再看中序遍历A在中间,也就是说分为两部分左子树DGB和右子树ECHIF。
2.然后先看DGB,在后序遍历中顺序是GDB也就是说B是左子树的根节点,DG为B 的左子树。再看DG,由后序遍历知道D为根节点,G为D的右叶子。
3.同理,在右子树中C为根节点,E为C的左子树,HIF是C的右子树,在HIF中 ,F为根节点,IH是他的左子树,在IH中,H是根节点,I是他的右叶子。
所以最后画出来是这个样子的:
关于二叉树转化为森林:
1.假如,想要转换成森林,从根节点开始,如果右孩子存在,则把与右孩子结点的连线删除。再查看分离后的二叉树;如果它根节点的右孩子存在,就连线删除。直到所有根节点与右孩子的连线都删除为止。
2.将每棵分离后的二叉树都转换为树。
R8-1 中序和后序创建二叉树相关推荐
- 手动创建一棵二叉树,然后利用前序、中序、后序、层序进行遍历(从创建二叉树到各种方式遍历)(含运行结果)
手动创建一棵二叉树,然后利用前序.中序.后序.层序进行遍历 import java.util.LinkedList; import java.util.List; import java.util.Q ...
- 二叉树的前序、中序、后序遍历与创建
#include <iostream> #include <string> #include <stack> using namespace std; struct ...
- 先序创建二叉树,中序、先序、后序遍历
该文件用于创建一颗链表二叉树,测试创建二叉树,先序.中序.后序三种遍历方式 创建二叉树代码如下: #define _CRT_SECURE_NO_WARNINGS #define TYPE char s ...
- 二叉链表-创建、遍历(前序、中序、后序、非递归、层次)、复制、计算深度、结点数、销毁(C语言)
目录 二叉树的定义 二叉树的性质 二叉链表的基本操作 二叉链表的结构定义 前序遍历创建 前序.中序.后序遍历 中序遍历的非递归算法(栈) 层次遍历(队列) 复制二叉树 计算深度 计算总结点数与叶子结点 ...
- 二十五、二叉树的前序、中序、后序遍历
一.为何使用树这种数据结构 数组存储方式的分析 优点:通过下标方式访问元素,速度快.对于有序数组,还可使用二分查找提高检索速度. 缺点:如果要检索具体某个值,或者插入值(按一定顺序)会整体移动,效率较 ...
- 把一个数组的值存入二叉树中,然后利用前序、中序、后序3种方式进行遍历(完整代码以及运行结果)(Java)
把一个数组的值存入二叉树中,然后利用前序.中序.后序3种方式进行遍历(完整代码以及运行结果) 在最近的面试过程中,听说有小伙伴被面试官要求创建二叉树,然后对该二叉树进行遍历,感觉这一直以来都是一个大家 ...
- 数据结构-简单实现二叉树的先序、中序、后序遍历(java)
第一步:创建一颗二叉树 public class Node { private int data;//数据域private Node leftNode;//左孩子private Node rightN ...
- 105从前序与中序遍历序列构造二叉树 106 从中序与后序遍历序列构造二叉树 (递归 + 哈希)
引言 这两道题主要是考察二叉树遍历的掌握,即由前序和中序推出原二叉树,由后序和中序推出原二叉树,这里先来说一下推导过程: 前序和中序 知道前序遍历和中序遍历,如何推原二叉树?(直接是结论,可以自行推导 ...
- 二叉树先序,中序,后序,层次遍历(数据结构)
先序遍历 先序遍历可以想象为,一个小人从一棵二叉树的根节点为起点,沿着二叉树的外沿,逆时针走一圈回到根节点,路上遇到的元素顺序,就是先序遍历的结果 先序遍历的结果为:A B D H I E J C F ...
- 二叉树的递归遍历(先序,中序,后序)
#include "stdio.h" #include "malloc.h" #define M 100 typedef struct node { /* 采用 ...
最新文章
- java date truncate_在Java中将dateTime转换为dd / mm / yy格式的日期
- 7能进安全模式但正常启动黑屏_电脑进入系统后黑屏怎么解决
- 月光博客 - 再谈软件保护中软加密和硬加密的安全强度
- python面向编程:类继承、继承案例、单继承下属性查找、super方法
- QDoc包括代码内联includecodeinline
- html如何设置字符类型,html 空格字符类型
- 插值算法及matlab实现,MATLAB 插值算法实现
- linux系统的文件系统tmpfs,linux里tmpfs文件系统
- ShardingSphere源码解析 初步准备
- SQLyog简介和使用
- 嵌入式C编程中的设计模式之二——状态机模式
- 互联网周刊咋么了呢?
- 人工智能助力三维几何自动化建模
- Xcode13 新建项目 Products 目录显示方法
- C语言 程序的翻译 预处理 编译 汇编 链接 #define详解
- 华为p10关闭更新_华为p10系统更新,华为emui5.0能否手撕emui4.1
- 万字长文详解 Go 程序是怎样跑起来的?| CSDN 博文精选
- Go语言中的字符串拼接方法介绍
- ADG修改主备数据同步规则--ARCHIVE_LAG_TARGET参数
- 解决部署Hexo后出现的The custom domain for your GitHub Pages site is pointed at an outdated IP address警告