669. 修剪二叉搜索树
题目链接:力扣题目链接
思路:和“450.删除二叉搜索树中的节点”类似,但是在遇到超过范围的时候要继续遍历不能单单删除一个节点,比如一个节点小于范围那就右侧子节点继续递归,大于范围类似操作。
class Solution {
public TreeNode trimBST(TreeNode root, int low, int high) {
return die(root,low,high);
}
public TreeNode die(TreeNode node,int low,int high){
if(node ==null){
return null;
}
if(node.val<low){
return die(node.right,low,high);
}else if(node.val>high){
return die(node.left,low,high);
}
node.left = die(node.left,low,high);
node.right = die(node.right,low,high);
return node;
}
}
108.将有序数组转换为二叉搜索树
题目链接:力扣题目链接
思路:求得数组中间的值,左侧作为左子树,右侧作为右子树继续递归。
538.把二叉搜索树转换为累加树
题目链接:力扣题目链接
思路:最大的困难在理解题目意思,其实可以转变理解为从最大的值逐渐变小遍历每个节点,不停累加赋值到每个节点,直到到最小值。设定一个成员变量,然后右中左递归遍历即可。
时间1.5h