这是一篇闲狗都能看懂的二叉树教程,因为是闲狗写的。
目录
1.4 完美二叉树(Perfect Binary Tree)
1.6 完全二叉树(Complete Binary Tree)
2.1.1 前序法 (preorder traversal,根左右)
2.1.2 中序法 (inorder traversal,左根右)
2.1.3 后序法 (postorder traversal,左右根)
1 二叉树的概念
1.1 二叉树是what?
二叉树:每个结点至多拥有两棵子树(即不存在度大于2的结点)
二叉树的子树有左右之分,其次序不能任意颠倒
1.2 二叉树的五种基本形态
1.3 二叉树的相关术语
上图的叶子结点:B,F,G,H,I
上图的分支结点:A,C,D,E
1.4 完美二叉树(Perfect Binary Tree)
A Perfect Binary Tree(PBT) is a tree with all leaf nodes(译成结点而非节点) at the same depth. All internal nodes have degree 2.
1.5 满二叉树(Full Binary Tree)
A Full Binary Tree (FBT) is a tree in which every node other than the leaves has two children. 所有非叶子结点的度都是2
1.6 完全二叉树(Complete Binary Tree)
A Complete Binary Tree (CBT) is a binary tree in which every level, except possibly the last, is completely filled, and all nodes are as far left as possible.
完全二叉树从根结点到倒数第二层满足完美二叉树,最后一层可以不完全填充,其叶子结点都靠左对齐。
1.7 扩充二叉树Extended binary tree
所有空子树,都增加空树叶
外部路径长度 E 和内部路径长度 I,满足:E = I + 2n (n 是内部结点个数)
E = 2 + 3 * 2 + 4 * 4 + 5 * 8 = 64
I = 1 * 2 + 2 * 3 + 3 * 4 + 4 * 4 = 36
E = I + 2n = 36 + 2 * 14 = 64
1.8 二叉树的主要性质
性质1. 在二叉树中,第i层上最多有 2i 个结点(i≥0)
性质2. 深度为 k 的二叉树至多有 2k+1-1个结点(k≥0),其中深度(depth)定义为二叉树中层数最大的叶结点的层数
性质3. 一棵二叉树,若其终端结点数为 n0,度为2的结点数为 n2, 则 n0=n2+1
性质4. 满二叉树定理:非空满二叉树树叶数目等于其分支结点数加1
树叶数目5(BFGHI) = 分支结点数4((ACDE) + 1
性质5. 满二叉树定理推论:一个非空二叉树的空子树数目等于其结点数加1
长方形结点的数目 = 圆形结点数目 + 1
累了累了,看下小姐姐轻松一下
2 二叉树的遍历(周游traversal)
2.1 深度优先遍历二叉树
2.1.1 前序法 (preorder traversal,根左右)
遍历过程为:
①访问根结点
②先序遍历其左子树
③先序遍历其右子树
A(B D F E )(C G H I)
先序遍历=> A B D F E C G H I
(1)递归实现
(2)非递归实现
使用堆栈
- 遇到一个结点,就访问该结点,并把此结点的非空右结点推入栈中,然后下降去遍历它的左子树;
- 遍历完左子树后,从栈顶托出一个结点,并按照它的右链接指示的地址再去遍历该结点的右子树结构。
入栈序列 C F I H
先序序列 A(C入栈) B(F入栈) D F(F出栈) E C(C出栈,I入栈) G(H入栈) H(H出栈) I(I出栈)
2.1.2 中序法 (inorder traversal,左根右)
遍历过程为:
①中序遍历其左子树
②访问根结点
③中序遍历其右子树
(D B E F) A (G H C I)
中序遍历=> D B E F A G H C I
(1)递归实现
(2)非递归实现
入栈序列 A B D F E C G H I
2.1.3 后序法 (postorder traversal,左右根)
遍历过程为:
(D E F B )( H G I C) A
后序遍历=> D E F B H G I C A
(1)递归实现
2.2 宽度优先遍历二叉树——层序遍历
2.3 应用
3 二叉树的存储结构
二叉树的各结点随机地存储在内存空间中,结点之间的逻辑关系用指针来链接。
3.1 二叉链表
3.2 三叉链表
博文短才会有人看的,下面转至《数据结构二叉树之闲死攻略(二)》
其实,不管长还是短都没人看你的。
本文参考自:
张铭《数据结构与算法》
程杰《大话数据结构》
陈越,何钦铭《数据结构》