树与二叉树中的前序遍历,中序遍历,后序遍历,层序遍历

本文深入介绍了二叉树的概念、类型及性质,包括满二叉树、完全二叉树、二叉排序树和平衡二叉树等,并探讨了二叉树的存储方式及遍历方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

经过学习一段时间的数据结构,总结有关树的知识如下

树是一种非线性的数据结构,它是由n个有限结点组成的一个具有层次关系的集合,
特点
1) 有一个特殊的节点,成为根节点,根节点没有前驱节点
2)除根节点外,其余节点被分为n个互不相交的集合,每个集合又类似一个树
3)树是递归定义的
概念
节点的度:一个节点含有的子树的个数称为该节点的度
树的度:一棵树中最大的节点
叶子节点或终端节点:度为0的节点
双亲节点或父节点:若一个含有子节点,则这个节点称为子节点的父节点
二叉树
一颗二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根节点加上两个左右子树组成的二叉树
特点
1)每个结点最多两个子树,即二叉树不存在度大于2的结点
2)二叉树有左右子树之分,其子树的次序不能颠倒,因此二叉树是有序树
类型
1)满二叉树
在这里插入图片描述
特点:除最后一层无任何子节点外,每一层上的所有结点都有两个子结点二叉树。如果一个二叉树的层数为K,且结点总数是(2^k) -1。

2)完全二叉树
在这里插入图片描述
特点:若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。

3)二叉排序树
特点:
二叉排序树或者是一棵空树,或者是具有下列性质的二叉树:
(1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值;
(2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值;
(3)左、右子树也分别为二叉排序树;
(4)没有键值相等的节点。
在这里插入图片描述
4)平衡二叉树
判断条件:
1)是不是二叉排序树
2)任何一个结点的左右子树都是平衡二叉树
3)左右子树的高度差的绝对值小于1
在这里插入图片描述
二叉树的性质
性质1:二叉树第i层上的结点数目最多为 2{i-1} (i≥1)。
性质2:深度为k的二叉树至多有2k-1个结点(k≥1)。
性质3:包含n个结点的二叉树的高度至少为log2 (n+1)。
证明:根据"性质2"可知,高度为h的二叉树最多有2{h}–1个结点。反之,对于包含n个节点的二叉树的高度至少为log2(n+1)。

二叉树的储存
二叉树的储存分为顺序储存和类似链表的链式储存
1)顺序储存
规定:从上到下,从左至右依次保存树中的结点
在这里插入图片描述
缺陷:若给定一个序列,无法知道一个结点是某节点的左,右孩子还是后继,
2)链式储存
二叉树的链式储存是通过一个个节点引用起来的,常见的表示方式有二叉和三叉表示方式,
孩子表示法:
class Node {
int val; //数据域
Node left; //左孩子的引用
Node right; //右孩子的引用
}
孩子双亲表示法:
class Node {
int val; //数据域
Node left; //左孩子的引用
Node right; //右孩子的引用
Node patent; //当前节点的根节点
}
二叉树的遍历
前序遍历:根 左 右
中序遍历:左 根 右
后序遍历:左 右 根
层序遍历:从根开始一层层从左到右遍历即可
1)前序
在这里插入图片描述先是根,在是根的左子树,遍历完整个左子树后再遍历根的右子树,
2)中序
在这里插入图片描述
先遍历完根的最后一层的整个左子树,再按照层序遍历遍历,等根的整的左子树遍历完再遍历根的右子树。
3)后序
在这里插入图片描述
先遍历左子树,之后遍历完根节点的左子树再遍历根节点的右子树
4)层序遍历
在这里插入图片描述
已知一棵二叉树的前根序序列和中根序序列,构造该二叉树的过程如下:

  1. 根据前根序序列的第一个元素建立根结点;
  2. 在中根序序列中找到该元素,确定根结点的左右子树的中根序序列;
  3. 在前根序序列中确定左右子树的前根序序列;
  4. 由左子树的前根序序列和中根序序列建立左子树;
  5. 由右子树的前根序序列和中根序序列建立右子树。

已知一棵二叉树的后根序序列和中根序序列,构造该二叉树的过程如下:
6. 根据后根序序列的最后一个元素建立根结点;
7. 在中根序序列中找到该元素,确定根结点的左右子树的中根序序列;
8. 在后根序序列中确定左右子树的后根序序列;
9. 由左子树的后根序序列和中根序序列建立左子树;
10. 由右子树的后根序序列和中根序序列建立右子树。

知道前序和后序不能构造出二叉树
已知二叉树的中序遍历为BDCEAFHG,后序遍历为DECBHGFA构造出二叉树
1,已知后序遍历可知,A为根节点。
2,由中序遍历知BDCE为左子树,FHG为右子树
3,再由后序遍历知DECB中B为根节点,HGF中F为根节点
4,再由中序遍历知BDCE中的DCE为B的右子树,同理HG为F的右子树
5,由后序遍历知DEC中C为根节点,HG中G为根节点
6,由中序遍历知DE分别为C的左右子树,H为G的左子树

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值