算法:二叉树

树状图是一种数据结构,它是由n(n>=1)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。
它具有以下的特点:每个节点有零个或多个子节点;没有父节点的节点称为根节点;每一个非根节点有且只有一个父节点;除了根节点外,每个子节点可以分为多个不相交的子树;
这里写图片描述

定义:
结点:包含一个数据元素及若干指向其子树的分支。
结点的度:结点拥有的子树数
叶结点:度为0的结点【没有子树的结点】
分支结点:度不为0的结点
孩子:结点的子树的根【直接后继,可能有多个】
双亲:孩子的直接前驱【虽说为双亲,但最多只能有一个
兄弟:同一双亲的孩子
子孙:以某结点为根的树中的所有结点
祖先:从根到该结点所经过分支上的所有结点
层次:根节点为第一层,其孩子为第二层,以此类推
深度:树中的结点的最大层次
森林:互不相交的树的结合。对树中的每个结点而言,其子树的集合即为森林。【森林可以转成二叉树】
这里写图片描述

种类:
无序树:树中任意节点的子结点之间没有顺序关系,这种树称为无序树,也称为自由树
有序树:树中任意节点的子结点之间有顺序关系,这种树称为有序树
二叉树:每个节点最多有两颗子树。
这里写图片描述
完全二叉树
这里写图片描述
满二叉树
这里写图片描述
霍夫曼树:带权路径最短的二叉树称为哈夫曼树或最优二叉树

在数据结构的算法中,主要还是使用二叉树更多。
二叉树的性质:
1、在二叉树的第i层上至多有2^(i-1)个结点
2、深度为k的二叉树至多有2^k-1个结点
3、如果二叉树终端结点数为n0,度为2的结点数为n2。那么n0=n2+1

遍历二叉树:
树的遍历就是某种次序访问树中的结点。要求每个结点访问一次且仅访问一次。设访问根结点用D表示,遍历左、右子树用L、R表示
这里写图片描述

先序遍历:
1、若二叉树为空,则返回。否则:
2、访问根结点
3、先序遍历左子树(L)
4、先序遍历右子树(R)
这里写图片描述
遍历结果:ABDEGCF

中序遍历:
1、若二叉树为空,则返回;否则:
2、中序遍历左子树(L)
3、访问根结点(D)
4、中序遍历右子树(R)
这里写图片描述
遍历结果:DBGEAFC

后续遍历:
1、若二叉树为空,则返回;否则:
2、后续遍历左子树(L)
3、后续遍历右子树(R)
4、访问根结点(D)
这里写图片描述
遍历结果:DGEBFCA

二叉树的创建过程,可以参考博文:点击参考

猜你喜欢

转载自blog.csdn.net/new_Aiden/article/details/50968125