数据结构-二叉树概念基础

204 阅读2分钟

二叉树的定义

二叉树是一种特殊的度为2的有序树,二叉树的每个结点最多只有两个子树。由于二叉树是排序树,所以两个子树的位置不能颠倒。当二叉树的结点数目为0时,称之为空二叉树。

如果结点只有一个孩子结点,在二叉树中仍然要确定这个孩子结点是左孩子结点还是右孩子结点。这也是二叉树和度为2的有序树的区别。

几种特殊的二叉树

满二叉树

在二叉树中,我们把高度为nn,结点数目为2n12^n-1的二叉树称之为满二叉树,满二叉树的每层都有着最多的结点,而且除了叶子结点,每个结点的度都为2。

完全二叉树

听到这个名字很容易产生误解,认为完全二叉树就是每层都含有最多的结点,且叶子结点都集中在二叉树的最后一层,但其实这是满二叉树的定义。当然,满二叉树也是一种完全二叉树

如果对一个满二叉树层序遍历设置编号,那么一棵二叉树的每个结点只要和满二叉树各个结点的编号连续对应,我们就称这棵二叉树是完全二叉树。

完全二叉树具有很多特殊性质,也是很多数据结构和算法题目中经常考到的一类树。

  • 在完全二叉树中,叶子结点只会出现在最后两层;
  • 按编号排列的完全二叉树,一旦编号为i的结点只有一个左孩子,那么任何编号大于i的结点都是叶子节点;
  • 在完全二叉树中,度为1的结点最多有1个,且该结点只有左孩子;
  • 任何编号大于n/2的结点都是叶子结点(n为完全二叉树结点个数)。

二叉树的几个性质

  • 高度为hh的二叉树最多有2h12^h-1个结点;
  • 二叉树的第xx层上最多有2x12^{x-1}个结点;
  • 二叉树的叶子结点数目等于度为2的结点数目再+1。