二叉树

树的基本术语

结点:树中的独立单元

结点的度:结点拥有的子树数称为结点的度

树的度:树内各结点度的最大值

叶子:度为0的结点称为叶子或终端结点。

非终端结点:度不为0的结点称为非终端结点或分支节点

双亲和孩子:结点的子树的根称为该结点的孩子,相应的,该结点称为孩子的双亲

兄弟:同一双亲的孩子之间互称兄弟

祖先:从根到该结点所经分支上的所有节点

子孙:以某结点为根的子树中的任一结点都称为该结点的子孙

层次:结点的层次从根节点开始定义,根为第一层,根的孩子为第二层,树中任一结点的层次等于其双亲结点的层次加1

树的深度:树中结点的最大层次称为树的深度或高度。

树的高度:从下往上数,叶子结点的高度为1

树的深度:从上往下数,根的深度为1

二叉树的定义

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

  1. 有且仅有一个称之为根的结点
  2. 除根结点外的所有结点分为两个互不相交的子集T_1,T_2,分别称为T的左子树和右子树,且T_1,T_2本身也都是二叉树

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

  1. 二叉树每个结点最多有两颗子树,结点的度最大为2
  2. 二叉树的子树有左右之分,次序不能颠倒

二叉树的性质和存储结构

二叉树的性质

  1. 在二叉树的第i层上最多有2^{i-1}个结点(i\geq 1)
  2. 深度为k的二叉树最多有2^{k}-1个结点(k\geqslant 1)
  3. 对任意一棵二叉树T,如果其终端结点数(叶子结点数)为n_0,度为2的结点数为n_2,则n_0=n_2+1
  4. 具有n个结点的完全二叉树的深度为\left \lfloor logn \right \rfloor+1
  5. 对一棵有n个结点的完全二叉树(其深度为\left \lfloor logn \right \rfloor+1)的结点按层序编号(从第1层到第\left \lfloor logn \right \rfloor+1层,每层从左到右),则对任一结点i(1\leqslant i \leqslant n)
  • 如果i=1,则结点i是二叉树的根,无双亲;如果i>1,则其双亲是结点\left \lfloor i/2 \right \rfloor
  • 如果2i>n,则结点i无左孩子(结点i为叶子结点);否则其左孩子是结点2i
  • 如果2i+1>n,则结点i无右孩子;否则其右孩子是结点2i+1

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

完全二叉树:只有最下边两层结点的度可以小于2,并且最下层的叶节点集中在靠左的若干位置上

满二叉树一定是完全二叉树,完全二叉树度为1的结点要么为0,要么为1

二叉查找树:又称二叉搜索树,二叉排序树,详见https://blog.csdn.net/weixin_38332967/article/details/81358763

二叉树的存储结构

分为顺序存储结构和链式存储结构

二叉树的遍历

二叉树的遍历根据遍历根结点的先后顺序可分为前序遍历、中序遍历和后序遍历,其中前序遍历+中序遍历和中序遍历+后序遍历均能够唯一确定一棵二叉树,但前序遍历+后序遍历不能唯一确定二叉树,因为无法确定二叉树的左右子树。

参考:《数据结构 C语言版》

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值