快速判断二叉树先序遍历 后序遍历
一、知道二叉树的先序/后序遍历和中序遍历(中序必须要知道,不然无法判断),要快速判断后序/先序遍历,首先要了解二叉树的遍历规律
二、二叉树遍历规律
1、三种遍历都有一个规律,就是:逆时针沿着二叉树外缘移动,即方向相同,如下图1:
图1
2、
3、 不同的是他们出发点不同,下面说明他们的出发点和遍历顺序序列
三、二叉树三种遍历
1、先序遍历
先序遍历先从二叉树的根开始,然后到左子树,再到右子树,,如图2
图2
先序遍历序列是ABDCEF,重点是记住第一个字母“A”是根,出发点是根“A”
2、中序遍历
中序遍历先从左子树开始,然后到根,再到右子树,如图3
图3
即中序遍历序列是DBAECF,重点是记住中序遍历的根位置,是在序列的第一个字母和最后一个字母之间,出发点是左子树的最下边的左边的开始,(为什么到A之后直接跳过C呢?因为C也是E和F的根,所以按照中序遍历规律,先到E再到C再到F)
3、后序遍历
后序遍历先从左子树开始,然后到右子树,再到根,如图4
图4
即后序遍历序列式DBECFCA,重点是知道了根是最后面一个字母“A”, 出发点是左子树的最下边左边。
四、道了先序遍历和中序遍历,或者是后序遍历和中序遍历,判断出后序遍历,或者是先序遍历的方法
比如知道先序遍历是ABDCEF,中序遍历是DBAECF,那么可以从先序遍历知道这个二叉树的根是A,(如果是选择题,可以快速判断出后序遍历的序列最后面一个字母肯定是A,然后选择最后面有A的选项)
从中序遍历看出A把DB和ECF隔开,即DB \A \ECF,因此可以知道DB属于左子树,ECF属于右子树
如果是填空题就要写出该二叉树的图,先写出左子树,从中序遍历知道DB是右子树,把DB看成一个整体,则从先序遍历判断可以确定B是D的根,这样就确定出左子树的图是
把ECF右子树看成一个整体,则从先序遍历可以知道C是E和F的根,确定出右子树是
然后把两个子树连在根“A”的下面,再根据后序遍历规律读出序列就可以了
转载于:https://www.cnblogs.com/davygeek/p/4375557.html
快速判断二叉树先序遍历 后序遍历相关推荐
- 如何判断二叉树的前序,中序,后序遍历
文章目录 前言 一.如何判断二叉树的前序,中序,后序遍历? 二.已知二叉树的前序遍历和中序遍历,如何得到它的后序遍历? 三.程序实现 总结 前言 最近复习题中看到二叉树,对于它的前序,中序,后序遍历的 ...
- 二叉树的前序、中序、后序遍历与创建
#include <iostream> #include <string> #include <stack> using namespace std; struct ...
- 手动创建一棵二叉树,然后利用前序、中序、后序、层序进行遍历(从创建二叉树到各种方式遍历)(含运行结果)
手动创建一棵二叉树,然后利用前序.中序.后序.层序进行遍历 import java.util.LinkedList; import java.util.List; import java.util.Q ...
- 二叉树的前中后序递归和非递归遍历操作【代码】
"遍历"是二叉树各种操作的基础,可以在遍历过程中对节点进行各种操作,如:求节点的双亲,求节点的孩子,判断节点的层次.当然,还有一些更重要的操作,例如,依据遍历序列建立二叉树,对建立 ...
- 分别用递归和非递归方式实现二叉树先序、中序和后序遍历(java实现)
分别用递归和非递归方式实现二叉树先序.中序和后序遍历 用递归和非递归方式,分别按照二叉树先序.中序和后序打印所有的节点.我们约定:先序遍历顺序 为根.左.右;中序遍历顺序为左.根.右;后序遍历顺序为左 ...
- 二叉树的前序,中序,后序,层序遍历的递归和非递归实现
直接上代码 import java.util.Stack;public class BinaryTree {//定义一棵二叉树,包括左子树.右子树.该节点的值和构造器public BinaryTree ...
- leetcode 106. 从中序与后序遍历序列构造二叉树 c语言递归解法
如题: 根据一棵树的中序遍历与后序遍历构造二叉树. 注意: 你可以假设树中没有重复的元素.例如,给出 中序遍历 inorder = [9,3,15,20,7] 后序遍历 postorder = [9, ...
- 105从前序与中序遍历序列构造二叉树 106 从中序与后序遍历序列构造二叉树 (递归 + 哈希)
引言 这两道题主要是考察二叉树遍历的掌握,即由前序和中序推出原二叉树,由后序和中序推出原二叉树,这里先来说一下推导过程: 前序和中序 知道前序遍历和中序遍历,如何推原二叉树?(直接是结论,可以自行推导 ...
- 算法练习day10——190328(二叉树的先序、 中序、 后序遍历, 包括递归方式和非递归方式、找到一个节点的后继节点、二叉树的序列化和反序列化)
1.实现二叉树的先序. 中序. 后序遍历, 包括递归方式和非递归方式 1.1 访问节点的顺序 节点访问顺序如下图所示: 访问顺序:1 2 4 4 4 2 5 5 5 2 1 3 6 6 6 3 7 7 ...
最新文章
- sql server2005 常用语句
- 【Linux 内核】Linux 内核体系架构 ( 硬件层面 | 内核空间 | 用户空间 | 内核态与用户态切换 | 系统调用 | 体系结构抽象层 )
- 集训2--进程控制理论
- apache.camel_Apache Camel 3.2 – Camel的无反射配置
- C#.NET编程----Spring.NET NHibernate整合(一)
- ue4是什么意思_UE4 C++基础教程 - 资源常见名词解释
- DSP重新上电程序不能运行
- 全网最快的网络服务器是什么,最好用最快的首选 DNS 服务器地址设置 (电信/联通/移动)...
- UE4游戏提取的通用步骤(21_9_8)
- windows 版本 Appium 环境搭建
- 计算机cpu的字母,笔记本计算机CPU型号后缀字母HQ,U,Y的详细说明
- Modern PHP
- Swift SwiftUI 必备础库之 01 Introspect
- Javabase入门介绍
- python学习之人民币兑美元之间的转换
- NOIP2012——文化之旅
- rpg人物制作软件_《RPG Maker MZ》——轻松上手的角色扮演游戏制作工具
- 全文搜索引擎Elasticsearch的初体验:基本概念和操作
- 转载--文章(感谢陈晨博主分享) 关于 Json.net
- js读取本地Excel内容
热门文章
- dedecms后台崩溃或者后台访问慢的解决方法
- Sql Server查询性能优化之走出索引的误区
- NGRAIN在模型轻量化上的应用
- python boxplot用法_Boxplot的介绍和使用
- python创建画布与子图_python实现在一个画布上画多个子图
- 永济计算机培训,永济云计算培训,永济计算机培训学费,永济计算机学完工作好找吗 - IT教育频道...
- c语言怎么算n以内素数,关于求N以内素数的一点小问题(N小于一亿)
- ubuntu用户目录安装pip(无root权限)
- windows下的工具链 树莓派_Windows下交叉编译Qt 5.14.2至树莓派平台 QEMU模拟树莓派...
- BigDecimal的加减乘除