数据结构—基础知识(十):树和二叉树(b)

发布时间:2024年01月24日

数据结构—基础知识(十):树和二叉树(b)

二叉树的定义

二叉树( Binary Tree)是n(n≥0)个结点所构成的集合,它或为空树(n=0);或为非空树,对于非空树T:

  1. 有且仅有一个称之为根的结点
  2. 根结点以外的其余结点分为两个互不相交的子集T1和 T2,分别称为T的左子树和右子树,且T1和T2本身又都是二叉树。

二叉树与树一样具有递归性质,二叉树与树的区别主主要有以下两点:

  1. 二叉树每个结点至多只有两棵子树(即二叉树中中不存在度大于2的结点);
  2. 二叉树的子树有左右之分,其次序不能任意颠倒到

二叉树的递归定义表明二叉树或为空,或是由一个根结点加上两棵分别称为左子树和右子树的、互不相交的二叉树组成。由于这两棵子树也是二叉树,则由二叉树的定义,它们也可以是空树。由此,二叉树可以有5种基本形态,如下图所示。
在这里插入图片描述

注:有关树的术语是都适用于二叉树

二叉树的性质

二叉树具有以下重要特性:

性质1 在二叉树的第i层上至多有2^(i-1)个结点(i≥1)。

性质2 深度为k的二叉树至多有(2^k)-1个结点(k≥1)。

性质3 对任何一棵二叉树T,如果其终端节点数为n0,度为2的结点数为n2,则n0=n2+1;结点总数为n=n0+n1+n2。

再看二叉树中的分支数。除根结点外,其余一个结点都有一个分支进入,设B为分支总数,则n=B+1。由于这些分支是由度为1或2的结点射出的,所以又有B=n1+2·n2。于是得n=n1+2·n2+1。

满二叉树和完全二叉树

满二叉树:深度为k且含有(2^k)-1个结点的二叉树。

  • 满二叉树的特点是:每一层上的结点数都是最大结点数,即每一层i的结点数都具有最大值2。
  • 可以对满二叉树的结点进行连续编号,约定编号从根结点起,自上而下,自左至右。由此可引出完全二叉树的定义。
    在这里插入图片描述

完全二叉树:深度为k的,有n个结点的二叉树,当且仅当其每一个结点都与深度为k的满二叉树中编号从1至n的结点一一对应时,称之为完全二叉树。

完全二叉树的特点是

  1. 叶子结点只可能在层次最大的两层上出现;
  2. 对任一结点,若其右分支下的子孙的最大层次为l,则其左分支下的子孙的最大层次必为l或I+1。

性质4 具有n个结点的完全二叉树的深度为log(2)(n)(向下取整)+1

性质5 如果对一棵有n个结点的完全二叉树(其深度为log(2)(n)(向下取整)+1)的结点按层序编号(从第1层到第log(2)(n)(向下取整)+1层,每层从左到右),则对任一结点i(1≤i≤n),有:

  1. 如果i=1,则结点i是二叉树的根,无双亲;如果i>1,其双亲PARENT(i)是结点i/2(向下取整)。
  2. 如果2i>n,则结点i无左孩子(结点i为叶子结点);否则其左孩子LCHILD(i)是结点2i。
  3. 如果2i+1>n,则结点i无右孩子;否则其右孩子RCHILD(i)是结点2i+1。
    在这里插入图片描述
文章来源:https://blog.csdn.net/qq_42257631/article/details/135752028
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。