世上树有万千种,唯有二叉纸上谈。
二进制:B
十进制:D
十六进制:H
神使用递归,人使用迭代(迭代的效率更高)
说了这么多,谈一下二叉树的定义。
二叉树的定义
在计算机科学中,二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。
二叉树的性质
- 二叉树的第i层至多有2^{i-1}个结点;
- 深度为k的二叉树至多有2^k-1个结点;
- 对任何一棵二叉树T,如果其终端结点数为n_0,度为2的结点数为n_2,则n_0=n_2+1。
推导n_0=n_2+1:
- 具有n个节点的完全二叉树的深度为
推导
-性质5
五个基本形态
满二叉树
完美的那是理想,不完美的才是人生。那我们来看一下满二叉树
一棵深度为k,且有2^k-1个节点称之为满二叉树;
特点:
1.叶子只能出现在最下一层
2.非叶子节点的度数都为2
3.在同样深度的二叉树中,满二叉树的节点个数一定最多,同时叶子也是最多。
完全二叉树
深度为k,有n个节点的二叉树,当且仅当其每一个节点都与深度为k的满二叉树中,序号为1至n的节点对应时,称之为完全二叉树。
特点:
1.叶子节点只能出现在最下两层
2.最下层的叶子一定集中在左部连续的位置
3.倒数第二层,若有叶子节点,一定都在右部连续位置
4.如果节点度为1,则该节点只有左孩子。
5.同样节点数的二叉树,完全二叉树的深度最小
注:满二叉树一定是完全二叉树,但完全二叉树不一定是满二叉树。
很二的二叉树是区分左右的,而我们前边说学的树是不区分左右的。