二叉树的相关概念

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiaodu655/article/details/81748896

一、概念:
二叉树:二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根节点加上两颗分别称为左子树和右子树的二叉树组成。
二叉树的特点:
1.每个结点最多有两颗子树,即二叉树不存在度大于2的结点。
2.二叉树的子树有左右之分,其子树的次序不能颠倒。

满二叉树:在一棵二叉树中,如果所有分支节点都存在左子树和右子树,并且所有叶子节点都在同一层上。
这里写图片描述
完全二叉树:如果一棵树具有N个结点的二叉树结构与满二叉树的前N个结点的结构相同,称为完全二叉树。
这里写图片描述

二叉树的性质:
1.若规定根节点的层数为1,则一颗非空二叉树的第i层上最多有2^(i-1)个结点。
2.若规定只有根节点的二叉树的深度为1,则深度为K的二叉树的最大结点数是2^k -1.
3.对任何一棵二叉树,如果其叶结点个数为n0,度为2的非叶节点个数为n2,则有n0=n2+1。
4.具有n个节点的完全二叉树的深度k为log2(n+1)向上取整。
5.对于具有n个节点的完全二叉树,如果按照从上至下从左至右的顺序对所有节点从0开始编号,则对于序号为i的节点有:

a.如果i>0,则序号为i节点的双亲结点的序号为(i-1)/2;如果i=0,则序号为i的节点为根节点,无双亲结点。

b.如果2i+1<n,则序号为i的结点的左孩子的序号为2i+1, 右孩子为2i+2。

二叉树的基本操作:
1.二叉树的四种遍历方式:
a.前序遍历:
若二叉树为空,则算法结束:

  • 访问根节点
  • 前序遍历根节点的左子树

  • 前序遍历根节点的右子树

这里写图片描述
b.中序遍历:

  • 中序遍历根节点的左子树
  • 访问根节点
  • 中序遍历根节点的右子树

这里写图片描述
c.后序遍历:

  • 后序遍历根节点的左子树
  • 后序遍历根节点的右子树
  • 访问根节点
    这里写图片描述

层序遍历:
按照二叉树的层序次序(即从根节点层到叶结点层),同一层中按先左子树再右子树的次序遍历二叉树。因此,在所有未被访问节点的集合中,排序在已访问节点集合中最前面节点的左子树的根节点最先被访问,然后是该节点的右子树的根节点。

这里写图片描述
层序遍历算法:
初始化一个队列
把根节点的指针入队列。
当队列非空时,循环执行下面步骤:
》出队列取一个节点
》若该节点的左子树非空,将该节点的左子树指针入队列。
》若该节点的右子树非空,将该结点的右子树指针入队列。

猜你喜欢

转载自blog.csdn.net/xiaodu655/article/details/81748896