【数据结构与算法】树与二叉树

二叉树的基本性质

两种二叉树

完全二叉树:如果有n层,前n-1层全满,第n层从左向右排列。

满二叉树:每个结点都是二度结点

性质1

在二叉树的第 i 层上至多有 $2^{i-1}$ 个结点

性质2

深度为 k 的二叉树上至多含 $2^k-1$ 个结点

性质3

对于任意一棵二叉树,若它含有 $n_0$ 个叶子结点、$n_2$ 个度为 2 的结点,则必存在关系式 $n_0 = n_2 + 1$

性质4

具有n个结点的完全二叉树的深度为 $\lfloor log_2n\rfloor+1$ 。

性质5

对于完全二叉树:
按照从上到下从左到右编号1 - n,对于任意一个编号为 i 的结点:

找双亲:i = 1,是二叉树的根,无双亲;否则,编号为 $\lfloor i/2\rfloor$ 的结点为其双亲结点。

找左孩子:2i>n,则该结点无左孩子,否则,编号为2i的结点为其左孩子结点。

找右孩子:2i+1>n,则该结点无右孩子,否则,编号为2i+1的结点为其右孩子结点。

遍历二叉树

先序遍历

根结点—先序遍历左子树—先序遍历右子树

中序遍历

中序遍历左子树—根结点—中序遍历右子树

后序遍历

后序遍历左子树—后续遍历右子树—根结点

由两种遍历结果建立原二叉树

哈夫曼树

结点的带权路径长度:从该结点到树根之间的路径长度与该结点上权值的乘积。

树的带权路径长度:树中所有叶子结点的带权路径长度之和。

带权路径长度最小的二叉树称为最优二叉树或哈夫曼树。

Author: iwannaeat
Link: https://iwannaeat.github.io/2020/08/23/【数据结构与算法】树与二叉树/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.