之前的笔记搬运
二叉树
0x1 二叉树的类型
(1)空二叉树——如图(a);
(2)只有一个根结点的二叉树——如图(b);
(3)只有左子树——如图(c);
(4)只有右子树——如图(d);
(5)完整二叉树——如图(e)。
状态:
满二叉树:
除了叶节点,每个父亲节点都有两个子树的,满满的二叉树
完全二叉树:
所有节点集中在树左边的二叉树,就是说除了叶节点,每个节点都只有左节点或者有两个节点,而没有只有右节点情况
0x2相关术语
1 | 树的结点: |
0x3 二叉树性质
(1) 在非空二叉树中,第i层的结点总数不超过 , i>=1;
(2) 深度为h的二叉树最多有2\^h - 1 个结点,最少有h个结点;
(3) 具有n个结点的完全二叉树的深度为log(n+1)
0x4 二叉树的存储结构
数组 (只适合满二叉树, 不然浪费空间, 这里不谈)
链式存储, 一般会用一个结构体表示节点, 也称三叉链表
1 | struct Tree |
0x5 二叉树的遍历
遍历即将树的所有结点访问且仅访问一次。按照根节点位置的不同分为前序遍历,中序遍历,后序遍历。
前序遍历:根节点->左子树->右子树
中序遍历:左子树->根节点->右子树
后序遍历:左子树->右子树->根节点
前: abdefgc
中: debgfac
后: edgfbca