您的位置:首页 > 理论基础 > 数据结构算法

数据结构学习笔记——二叉树的类型定义

2016-02-17 20:35 459 查看

二叉树

二叉树或为空树;或者是由一个根结点加上两棵分别称为左子树和右子树的、互不相交的二叉树组成。

树和二叉树都是用递归定义的,递归定义的数据结构的基本操作一般也可以用递归算法实现。

二叉树有5种基本形态

空树

只含根结点

右子树为空树

左子树为空树

左右子树均不为空树。

二叉树是有序的,即使树中结点只有一棵子树,也要区分它是左子树还是右子树。

两类特殊的二叉树:

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

完全二叉树:树中所含的n个结点和满二叉树中编号为1~n的结点一一对应。

特征:深度为k的完全二叉树前k-1层是满的。

叶子结点可出现在第k层和k-1层。

第k层结点集中在左侧。

二叉树的重要特性

在二叉树的第i(i≥1i\geq1)层上至多有2i−12^{i-1}个根结点。

深度为k(i≥1i\geq1)的二叉树上至多含2k−12^k-1个结点。

推广:满二叉树的第k层的结点个数比其第1~k-1层所有的结点总数多1个。

对任何一棵二叉树,若它含有n0n_0个叶子结点、n2n_2个 度为2的结点,则必存在关系式:n0=n2+1n_0=n_2+1

推广:已知一棵度为m的树中有N1个度为1的结点,N2个度为2的结点,……Nm个度为m的结点,问该树中有多少个叶子结点。

证明:设N为总结点数,N0为叶子结点数,则:N=N0+N1+N2+……Nm

N-1=N1*1+N2*2+……Nm*m=分支总数

则有:N0=1+N2+2N3+……+(m-1)*Nm

具有n个结点的完全二叉树的深度为⌊log2n⌋ \lfloor log_2n \rfloor+1或⌈log2(n+1)⌉\lceil log_2(n+1)\rceil

若对含n个结点的完全二叉树从上到下且从左至右进行1至n的编号,则对完全二叉树中任意一个编号为i的结点:

若i=1,则该结点是二叉树的根,无双亲,否则,编号为i/2的结点为其双亲结点;

若2i>n,则该结点无左孩子,否则,编号为2i的结点为其左孩子结点;

若2i+1>n,则该结点无右孩子结点,否则,编号为2i+1的结点为其右孩子结点。

以上五个性质在严书上均有证明。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: