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

树、二叉树、遍历二叉树的总结

时间:2016-05-13 00:00:55      阅读:464      评论:0      收藏:0      [点我收藏+]

标签:

首先介绍树:

 

技术分享

如上图所示就是一棵树,先介绍树的几个关键名词:

节点:A、B、C、D等都叫节点

节点的度:节点有几个分支,就叫节点的度,比如节点B有2个分支,那B的度为2

终端节点(叶子):没有分支的节点,如E、F、G、H

非终端节点:有分支的节点,如A、B、D、C

节点的层次:自上而下排列层次,A为1层,B为2层,D为3层

树的度:哪个节点的度最大,这个最大的度就是树的度,如图树的度为2

树的深度:简而言之,就是树有几层,如图的树的深度为4

  


我们接触最多的树是二叉树

二叉树:在计算机科学中,二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。

二叉树的5种基本形态:

 技术分享

 

注意:(a)的意思是二叉树没有任何节点

 

 

满二叉树:除最后一层无任何子节点外,每一层上的所有结点都有两个子结点(最后一层上的无子结点的结点为叶子结点)。也可以这样理解,除叶子结点外的所有结点均有两个子结点。节点数达到最大值。所有叶子结点必须在同一层上。

技术分享 

 

 

假如满二叉树有K层,那么他总结点数是:2^k-1,第k层的结点数是:2^(k-1)

 


 

完全二叉树:若设二叉树的深度为k,除第k 层外,其它各层(1k-1)的结点数都达到最大个数,第 k 层所有的结点都连续集中在最左边,这就是完全二叉树。

完全二叉树是指最后一层左边是满的,右边可能满也可能不满,然后其余层都是满的可以这么看完全二叉树:对满二叉树的最后一排自右往左剪叶子。

 技术分享

 

 

 

 

平衡树

二叉树是一种非平衡树,各个子树之间的高度可能相差很大,这样就造成平均性能的下降。为了使各个子树的高度基本保持平衡,平衡树就应运而生了。

平衡树包括很多种类,常见的有B树、AVL树、红黑树等。B树主要应用于文件系统、数据库等方面,而AVL树和红黑树多用于检索领域。

 

红黑树

红黑树是每个节点都带有颜色属性的二叉查找树,颜色或红色或黑色。在二叉查找树强制一般要求以外,对于任何有效的红黑树我们增加了如下的额外要求:

性质1. 节点是红色或黑色。

性质2. 根节点是黑色。

性质3 每个叶节点(NIL节点,空节点)是黑色的。

性质4 每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)

性质5. 从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。

技术分享

 

                                                                红黑树

 

 

 

 

二叉树的遍历:

先序遍历:根左右,首先访问根结点,然后遍历左子树,最后遍历右子树

中序遍历:左根右,首先遍历左子树,然后访问根结点,最后遍历右子树

后序遍历:左右根,首先遍历左子树,然后遍历右子树,最后访问根结点

 

可以看出,前序、中序、后序分别是以根的位置来命名的,比如“根左右”,根最前,所以命名为前序;“左根右”,根排第二,所以叫中序。也可以这么理解:“根”“左”“右”分别是三种东西,谁排前头谁就先遍历谁。值得注意的是,“左”一定比“右”拍的靠前。

 

小试牛刀:

技术分享

如上图

前序遍历:FCADBEGHP

中序遍历:ACBDFEHGP

后序遍历:ABDCHPGEF

 


再来一个复杂的:

 技术分享

如上图

前序遍历:ABMCDEFGHK

中序遍历:MBDCAEHGKF

后序遍历:MDCBHKGFEA

 

树、二叉树、遍历二叉树的总结

标签:

原文地址:http://blog.csdn.net/qq_25606103/article/details/51344898

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