码迷,mamicode.com
首页 > 其他好文 > 详细

数据结构(七)二叉树

时间:2017-06-13 10:02:37      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:数据   二叉树   data-   resource   中序   完全二叉树   空间   img   遍历   

定义

技术分享
 

特点

技术分享
 

特殊的二叉树

斜树

顾名思义,其中的结点都只有一个,又分为左斜树和右斜树,这时候又有疑惑了,这种数据结构不是有线性表一样吗,没错,线性表是一种特殊的树
 

满二叉树

技术分享
 

完全二叉树

技术分享
 
这个定义有点绕,简单来说就是所有的结点必须是有顺序的,不能跳跃存在
 

二叉树的性质

1.在二叉树的第i层至多有2的(i-1)次方个结点,参考满二叉树
2.深度游k的二叉树至多有2的k次方-1个结点,参考满二叉树
3.任意二叉树,终端结点为n0,度为2的结点为n2,度为1的结点为n1,则n0=n2+1
下面是推倒过程,设连接线为x,总结点数为n,则:
n=n0+n1+n2
x=n1+2n2
x=n-1
求得n0=n2+1
 

存储结构

二叉树的顺序结构

技术分享
这有点像广度优先遍历,但这里关注的是存储结构,不是遍历方式,顺序结构一般只用于满二叉树,普通二叉树会有空间浪费,例如(^表示空)
技术分享
 

二叉链表

一个数据域,两个指针域分别表示左孩子和右孩子
技术分享
 

二叉树的遍历

技术分享
 

前序遍历

技术分享
 
技术分享
 

中序遍历

技术分享

后序遍历

技术分享
 
技术分享
 

层序遍历

技术分享
这四种遍历名称都是针对每一个根结点而言,
前序:先遍历根节点(深度优先遍历)
中序:中间遍历根节点
后序:最后遍历根节点
层序:从根节点一层一层往下遍历(广度优先遍历)
 
技术分享
 

线索二叉树

定义

指向前驱和后继的指针称为线索,加上线索的二叉链表称为线索二叉链表,相应的二叉树就成为思安所二叉树
技术分享
还需要证明前驱后后继是否为孩子,所以加入了两个标志位,单个结点的结构如下
技术分享

场景

技术分享
 

赫夫曼树及其应用

定义及原理

从树中一个结点到另一个结点之间的分支构成两个结点之间的路径,路径上的分支数目称做路径的长度
例如这两个二叉树
技术分享
 
二叉树a中,从根结点到D结点的路径为4,二叉树b中,从根结点到D结点的路径为2
二叉树a的树路径长度为1+1+2+2+3+3+4+4=20
二叉树b的树路径长度为1+1+2+2+2+2+2+3+3=16
如果考虑带权路径,路径与权的乘积才是最终的路径长度

定义

技术分享
也称为最优二叉树
如何构建赫夫曼树
技术分享
 
技术分享
 

如何构建赫夫曼树总结

技术分享
 

赫夫曼树的应用-赫夫曼编码

定义

技术分享
数据压缩的原理基于此

数据结构(七)二叉树

标签:数据   二叉树   data-   resource   中序   完全二叉树   空间   img   遍历   

原文地址:http://www.cnblogs.com/ulysses-you/p/6999282.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!