树
二叉树
由一个根节点加上根节点的做字数和右子树互不相交。在二叉树中,每个节点最多有两个子节点,左子节点和右子节点。
二叉树一般有几种特定的:
- 满二叉树:所有叶子结点都在一层
- 完全二叉树:所有叶子结点都在后两层,并且最后一层结点依次从左到右排列。
- 二叉搜索树:满足条件父节点大于左子树所有结点,父节点大于右子树所有结点。
- AVL树:本身是二叉搜索树,并且满足条件每个节点的左右子树深度差不超过1
- 红黑树:节点带着红色或黑色,黑色是根节点。非叶节点到达叶子节点路径所包含的黑色节点数相同。
二叉树存储形式
二叉树的存储一般采用多重链表的方式。
struct TreeNode
{
int val;
TreeNode* left;
TreeNode* right;
}
所以和链表类似,只要得到根节点的地址,就能通过二叉树的链式结构访问到以这个节点为根节点的子树。
二叉树的遍历
两种遍历顺序:基于深度优先搜索的遍历,利用二叉树的递归性质:前序遍历、中序遍历、后序遍历。属于这一类遍历算法。
void