二叉树

本文介绍了二叉树相关知识,包括其特点为每个节点最多俩子树且左右子树有顺序;有五种基本形态,还有斜树、满二叉树、完全二叉树等特殊类型;阐述了二叉树性质,介绍顺序和链式两种存储结构,以及前序、中序、后序、层序四种遍历方式。

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

二叉树是n(n>=0)个结点的有限集合,二叉树中的节点最多只能有两个子结点。

二叉树的特点:

  1. 每个节点最多有两个子树,所以每个节点最多只能有两个子结点。
  2. 左子树和右子树是有顺序的,次序不能任意颠倒。
  3. 即使树中某个节点只有一棵子树,也需要区分它是左子树还是右子树。

二叉树具有五种基本形态:

  1. 空二叉树
  2. 只有一个根结点
  3. 根结点只有左子树
  4. 根结点只有右子树
  5. 根结点既有左子树又有右子树

特殊二叉树:

  • 斜树

所有的结点都只有左子树的二叉树叫左斜树,还有右斜树。每层只有一个节点,斜树其实和线性表结构一样。所以线性表也可以理解为树的一种特殊的表现形式。

  • 满二叉树

深度为k的满二叉树一定有个结点

  • 完全二叉树

对一棵具有n个节点的二叉树按层序编号,如果编号为i的结点与同样深度的满二叉树中的编号为i的结点在二叉树中的位置完全相同,则这棵二叉树称为完全二叉树。

   完全二叉树的叶子结点只存在于底部两层且集中在右部连续位置。

   满二叉树一定是完全二叉树,完全二叉树不一定是满二叉树。

二叉树的性质:

  1. 在二叉树的第i层上最多有个结点
  2. 深度为k的二叉树最多有个结点,也就是满二叉树
  3. 对任何一棵二叉树T,如果叶子结点数为n0,度为2的结点数为n2,则n0=n2+1,叶子结点数比度为2的结点数多1
  4. 具有n个结点的完全二叉树的深度为  (向下取整)
  5.  

二叉树的存储结构

    可以用顺序存储,但是可能会浪费大量的空间,所以顺序存储只适合完全二叉树。

    链式存储更适合二叉树,二叉树每个结点最多有两个孩子,所以为它设计一个数据域和两个指针域。

    data是数据域,两个child分别存左孩子和右孩子。

遍历二叉树

  前序遍历

       ->左->右

      

    ABDGHCEIF

  •     深度优先搜索和树的先序遍历类似,算是树的先序遍历的推广。

    中序遍历

       左->->右

       

    GDHBAEICF

    后序遍历

       左->右->

       

    GHDBIEFCA

前、中、后都是以访问根节点的顺序为基准。

  • 已知前序遍历序列和中序遍历序列,可以唯一确定一棵二叉树。
  • 已知后序遍历序列和中序遍历序列,可以唯一确定一棵二叉树。
  • 但是已知前序遍历序列和后序遍历序列,是不能确定一棵二叉树的。

    层序遍历

       从上到下逐层遍历,再同一层当中从左到右

        

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值