树
1、基本术语
结点的度:树中一个结点的孩子个数
树的度:树中某个结点的最大度数
非终端结点:度大于0的结点称为分支结点(又称非终端结点)
终端结点:度为0(没有子女结点)的结点称为叶子结点(又称终端结点)
树的高度(或深度):是树中结点的最大层数。图中树的高度为4。
有序树:树中结点的各子树从左到右是有次序的,不能互换
无序数:树中结点的各子树是无次序的,可互换
路径:两个结点之间所经过的结点序列
路径长度:路径上所经过的边的个数
森林:是m (m≥0)棵互不相交的树的集合
二叉树:每个结点至多只有两棵子树( 即二叉树中不存在度大于2的结点)。二叉树是有序树,若将其左、右子树颠倒,则成为另一棵不同的二叉树。
斜树:所有的结点都只有左子树的二叉树叫左斜树。所有结点都是只有右子树的二叉树叫右斜树。这两者统称为斜树
满二叉树:高度为n且有2n-1个节点
完全二叉树:叶子结点只能出现在最下层和次下层,且最下层的叶子结点集中在树的左部
二叉排序树:左子树上所有结点的关键字均小于根结点的关键字;右子树上的所有结点的关键字均大于根结点的关键字;左子树和右子树又各是一棵二叉排序树。
平衡二叉树:树上任一结点的左子树和右子树的深度之差不超过1。
线索二叉树:把这种指向前驱和后继的指针称为线索,加上线索的二叉链表称为线索链表,相应的二叉树就称为线索二叉树
线索化的实质就是遍历一次二叉树,线索化的过程就是在遍历的过程中修改空指针的过程
其结点结构如下所示:
哈夫曼树:在含有n个带权叶结点的二叉树中,其中带权路径长度(WPL)最小的二叉树称为哈夫曼树,也称最优二叉树
例如,下图中的3棵二叉树都有4个叶子结点a, b,c,d,分别带权7,5,2,4,它们的带权路径长度分别为
a. WPL = 7x2 + 5x2 + 2x2 + 4x2 = 36。
b. WPL = 4x2 + 7x3 + 5x3 + 2x1 = 46。
c. WPL = 7x1 + 5x2 + 2x3 + 4x3 = 35。
其中,图c树的WPL最小。可以验证,它恰好为哈夫曼树。
具体参见:(40条消息) 数据结构:树(Tree)【详解】_UniqueUnit的博客-CSDN博客_数据结构树
二、二叉树:
1、二叉树的存储结构:
(2)链式存储结构
2、二叉树的遍历:
(1)先序遍历:根左右
(2)中序遍历:左根右
(3)后序遍历:左右根
(4)层次遍历:一层一层的遍历
本文来自博客园,作者:日月星宿,转载请注明原文链接:https://www.cnblogs.com/ryxxtd/p/16123139.html