654. 最大二叉树
重刷了最大二叉树,发现两个有意思的点
如果递归变量数目不同,那就不能拿原函数直接递归,只能再写一个递归
二叉树的边界构建一定要始终保持一致,开始是左闭右开那就一直左闭右开,开始是闭区间就一直是闭区间,这一点在归并、快速排序中很重要
上次借助Carl的代码写出来了,这次能手撕了
1 | class Solution { |
为什么刷上面的题目呢? 因为是为下面的题目做铺垫 ^_^
108. 将有序数组转换为二叉搜索树
设好了区间后,直接用可以求pos了
实际上这题的pos包括了两种情况,一个表达式就能搞定
1 | class Solution { |
再看看官方题解,区间设置也很有意思,它是左闭右闭区间
1 | class Solution { |
450.删除⼆叉搜索树中的节点
又是一个很久没写的题目,直接跪
1 | class Solution { |
惊叹于别人函数设计的巧妙性,望尘莫及
538. 把二叉搜索树转换为累加树
没写出来前觉得好难,经过卡尔的提示就很快写出来了。这题开始时觉得莫名其妙,为什么要这么累加,跟我想的完全不一样,结果没想到是反向累加,那就反向中序遍历就好了,顺便把之前的指针技巧给用上了
1 | class Solution { |
结束语
今天就把二叉树给收尾了,中间跳了一题不想写了,下次补上,下次见面二叉树应该是二周目了!我的定位暂时是前端,最终目标应该是sde,前端是一个快速入门的过渡阶段,