您的位置:首页 > 其它

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

2016-05-08 11:40 260 查看
首先介绍树:



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

节点: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 层外,其它各层(1~k-1)的结点数都达到最大个数,第
k 层所有的结点都连续集中在最左边,这就是完全二叉树。

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



平衡树

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

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

红黑树

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

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

性质2.
根节点是黑色。

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

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

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



红黑树

二叉树的遍历:

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

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

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

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

小试牛刀:



如上图

前序遍历:FCADBEGHP

中序遍历:ACBDFEHGP

后序遍历:ABDCHPGEF

再来一个复杂的:



如上图

前序遍历:ABMCDEFGHK

中序遍历:MBDCAEHGKF

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