#树
108.将有序数组转换为二叉搜索树
数组构造二叉树,构成平衡树是自然而然的事情,因为大家默认都是从数组中间位置取值作为节点元素,一般不会随机取
701. 二叉搜索树中的插入操作
我们插入元素,不需要考虑调整,插入的时候就插在最后面就可以,因此会有三种可插入情况,其中一种必然可插入,另外两种可能可以插入。如果不可插入,那就进入递归中进行查询
501. 二叉搜索树中的众数
通用的方法是这里用到针对 map 或 unordered_map 容器的 value 进行排序,理论上只支持 key 的排序,即 map 本身是自动机械能 key 排序的。如果要进行 value 排序,就需要将其大包围 pair 放到 vector 中,然后利用 sort 的自定义排序函数的方式进行 value 的排序。如果是二叉搜索树,利用中序遍历再来看此树,就是相当于看有序的数组一样
530. 二叉搜索树的最小绝对差
如果按照前面提供的正确答案,而是 prev 节点 和 cur 节点比较就不会出错,因为在中序遍历下是有序的。而我的这份错误的代码的虽然也是中序,但是 prev 意指 父节点,而 cur 意指 孩子节点,这就无法完全遵循二叉搜索树的有序性,从而出错
654. 最大二叉树
我居然把 getMaxIndex 用二分法去实现,真是聪明反被聪明误,二分法只能处理有序,但是我为了找到下标,是不能把里面的元素进行有序的
112. 路径总和
这道题要注意题意,判断该树中是否存在 **根节点到叶子节点** 的路径,这条路径上所有节点值相加等于目标和 `targetSum` 。
226. 翻转二叉树
如果你明白二叉树就是多条链表,就明白在赋值之前,应该保存好要被修改的节点,来保证原始数据不会丢失
98.验证二叉搜索树
中序遍历二叉搜索树得到递增的有序数据