今日任务
完成数组刷题- 完成数组基础知识
学习二叉树- 学习第二天的解题思路
常规作业
二分查找
这是代码随想录刷题的开头
首先是二分查找法,对于代码随想录的第一题就像abandon一样熟悉了。
在刷题的时候遇到几个问题,今天需要搞明白:
- 写的是左闭右闭,但是很粗心的没有给
right=nums.size()-1
; - 需要再推导才知道while内的判断语句应该是什么样
- 对于
mid = left + (right - left) / 2
,这里应该是直接取整?
移除元素
出现的问题
- 写的时候没有注意到else的部分
二叉树
基础知识
- 二叉树的分类
- 二叉树的存储
- 二叉树的遍历
- 二叉树的定义
二叉树是很特别的数据结构。二叉树主要分为了:
- 满二叉树:只有度为0的结点和度为2的结点,并且度为0的结点在同一层上。
- 完全二叉树:除了底层其余的层都是满的,且底层是由左向右的排序。
- 二叉搜索树:带有数值?二叉搜索树是一个有序树。
- 平衡二叉搜索树:左子树与右子树的深度差小于1。
二叉树的存储:
链式存储: value+左节点+右节点
顺序存储:
遍历:
- 递归遍历:根据中的位置命名。其中,左代表左子树。
- 前序: 中左右
- 中序:左中右
- 后序:左右中
- 层序遍历
定义 很重要
struct TreeNode{
int value;
TreeNode *LeftNode;
TreeNode *RightNode;
TreeNode(int x): value(x), LeftNode(NULL), RightNode(NULL);
}