在上一篇中我们进行了排序算法的专项练习,现在让我们开始树的知识点讲解。
树
树是一种非线性的数据结构,也是一种表示一对多关系的数据结构,它由若干个节点(Node)和连接这些节点的边(Edge)组成。树有很多应用,如用于实现文件系统、数据库索引和编译器等。
下面是树的一些常见概念及其相关知识点:
1.根节点(Root):树的最顶层节点,它没有父节点。
2.叶子节点(Leaf):没有子节点的节点。
3.父节点(Parent):如果一个节点有子节点,则该节点称为其子节点的父节点。
4.子节点(Child):一个节点的直接后继节点称为其子节点。
5.节点的度(Degree):一个节点拥有的子节点数称为其度。
6.树的度(Degree):树中所有节点度的最大值。
7.深度(Depth):根节点到该节点的路径长度。
8.高度(Height):该节点到叶子节点的最长路径长度。
9.子树(Subtree):以一个节点为根节点的子树是由该节点及其所有后代节点组成的树。
10.兄弟节点(Sibling):拥有同一个父节点的节点互为兄弟节点。
11.前序遍历(Pre-order Traversal):首先访问根节点,然后依次递归遍历左子树和右子树。
可以每个节点的左侧画一个点,然后逆时针画一条线,经过点就输出点对应的节点(推荐)
中序遍历(In-order Traversal):先递归遍历左子树,然后访问根节点,最后递归遍历右子树。
可以每个节点的下方画一个点,然后逆时针画一条线,经过点就输出点对应的节点(推荐)
后序遍历(Post-order Traversal):先递归遍历左子树和右子树,然后访问根节点。
可以每个节点的右侧画一个点,然后逆时针画一条线,经过点就输出点对应的节点(推荐)
12.层序遍历(Level-order Traversal):从上到下,从左到右依次访问每一层的所有节点。
13.二叉树(Binary Tree):每个节点最多只有两个子节点的树。
14.满二叉树(Full Binary Tree):除叶子节点外,每个节点都有两个子节点的二叉树。
15.完全二叉树(Complete Binary Tree):除了最后一层外,其他层的节点数都是满的,最后一层的节点全部靠左排列的二叉树。
16.平衡二叉树(Balanced Binary Tree):左右子树的高度差不超过1的二叉树。
二叉搜索树
二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。
AVL树(平衡二叉树/二叉查找树)
AVL树是一种自平衡的二叉搜索树,它得名于其发明者G. M. Adelson-Velsky和E. M. Landis。AVL树的特点是任何节点的两个子树的高度最多相差1,这使得AVL树在插入和删除节点时能够保持较好的平衡性,从而保证了查找操作的效率。
在AVL树中,每个节点都会存