669. 修剪二叉搜索树
思路:
关键点在于怎么处理如下图的情况 怎么接住删除掉的节点的子节点
108.将有序数组转换为二叉搜索树
思路:
本质就是寻找分割点,分割点作为当前节点,然后递归左区间和右区间
分割的数组长度为偶数的时候,中间元素为两个,取哪个元素为根都可以 所以本题的答案也不唯一
区间定义成左闭右闭
int mid = (left + right) / 2;
,这么写其实有一个问题,就是数值越界,例如left和right都是最大int,这么操作就越界了,在二分法中尤其需要注意!
所以可以这么写:int mid = left + ((right - left) / 2);
538.把二叉搜索树转换为累加树
思路:
讲搜索树看成有序数组的累加 因为题中的遍历方式是右根左 所以采取中序遍历 然后reversal
或者直接右根左来遍历