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

【数据结构】二叉树概述

2017-07-16 10:35 232 查看
1.树的定义

树( Tree’ )是n(n~O) 个结点的有限集。n=O 时称为空树。在任意-棵非空树中: ( 1 )有且仅有-个特定的称为根( Root )的结点: (2) 当n>1 时,其余结点可分为m (m>O) 个互不相变的有限集T1 、T2、……、Tm . 奠中每一个集合本身又是一槐树,并且称为根的子树( SubTree )



节点分类

结点拥有的子树数称为结点的度(Degree) 。

度为0 的结点称为叶结点(Leaf) 或终端结点;度不为0 的结点称为非终端结点或分支结点。

树的度是树内各结点的度的最大值。

2.树的概念

(1)深度:树中结点的最大层次称为树的深度( Dep也)或高度



(2)树的存储结构

双亲表示法

孩子表示法

孩子兄弟表示法

3.二叉树的定义

二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”和“右子树”,左子树和右子树同时也是二叉树。二叉树的子树有左右之分,并且次序不能任意颠倒。二叉树是递归定义的,所以一般二叉树的相关题目也都可以使用递归的思想来解决,当然也有一些可以使用非递归的思想解决,我下面列出的一些算法有些采用了递归,有些是非递归的。

4.二叉树的分类

(1)满二叉树

除叶子节点外,所有节点的度都为2



(2)完全二叉树

叶子结点只能出现在最下两层。

最下层的叶子一定集中在左部连续位置。

倒数二层,若有叶子结点,一定都在右部连续位置。

如果结点度为1 ,则该结点只有左孩子,即不存在只有右子树的情况。

同样结点数的二叉树,完全二叉树的深度最小。



5.二叉树的性质

二叉树中,第i层的节点最多有2(i-1)个。

深度为k的二叉树最多有2k-1个节点。

二叉树中,叶子节点树为N1个,度为2的节点有N2个,那么N1=N2+1。

具有N个结点的二叉树深度为(Log2 N)+1层。

N个结点的完全二叉树如何用顺序存储,对于其中的一个结点i,存在以下关系,

2*i是结点i的父结点。

i/2是结点i的左孩子。

(i/2)+1是结点i的右孩子。

6.哈夫曼树

(1)定义

哈夫曼树是一种带权路径长度最短的二叉树,也称为最优二叉树

(2)构建哈夫曼树

1>将所有左,右子树都为空的作为根节点。

2>在森林中选出两棵根节点的权值最小的树作为一棵新树的左,右子树,且置新树的附加根节点的权值为其左,右子树上根节点的权值之和。注意,左子树的权值应小于右子树的权值。

3>森林中删除这两棵树,同时把新树加入到森林中。

4>重复2,3步骤,直到森林中只有一棵树为止,此树便是哈夫曼树



本人才疏学浅,若有错请指出

谢谢!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: