今天学习的时候好奇去看了一下其他人分享的面试经验,感觉自己还差好多,不能停止脚步啊.
今天学到的是树的知识,看了看视频,敲了敲代码,可以区分出二叉搜索树,完全二叉树,满二叉树和avl树,并掌握了他们的基本操作。明天计划:红黑树,线段树和trie树
二叉搜索树
- 定义:左子树每个节点的值都小于他的父节点,右子树每个节点的值都大于他的父节点(左右节点也是二叉搜索树)
- 二叉搜索树每个节点最多有两个孩子
- 二叉搜索树不一定是满二叉搜索树
- 二叉搜索树存储的元素必须具有可比性
- 满二叉树:除了叶子节点以外,每个节点都有两个子节点,满二叉树一定是完全二叉树,完全二叉树不一定是满二叉树.
- 满二叉树节点和深度的关系:n = 2^k - 1
- 第i层的节点数为2^(i - 1)
- 完全二叉树最后一行可能不完整,但缺失的一定是右边
AVL树
- 定义:avl树是自平衡二叉查找树,树中容忍和节点的两个子树最大高度差为1,增加和删除操作需要一到多次树旋转来平衡这个数
- avl树本质上是一颗二叉搜索树