代码随想录算法训练营第二十一天| 669. 修剪二叉搜索树 、 108.将有序数组转换为二叉搜索树 、538.把二叉搜索树转换为累加树

10 阅读1分钟

669. 修剪二叉搜索树

相关链接:题目链接文章讲解 视频讲解

解题思路

代码实现

var trimBST = function(root, low, high) {
    if(root == null) return null;
    if(root.val > high){
        return trimBST(root.left, low, high)
    }
    if(root.val < low){
        return trimBST(root.right, low, high)
    }
    root.left = trimBST(root.left,low,high);
    root.right = trimBST(root.right,low,high);
    return root;

};

108.将有序数组转换为二叉搜索树

相关链接:题目链接文章讲解 视频讲解

解题思路

代码实现

 // 这题提示平衡二叉搜索树,则提示左右子树的高度差不能为1
 // 如果不是平衡二叉搜索树则,直接全是右子树构成的二叉搜索树
var sortedArrayToBST = function(nums) {
    var trvasal = function(nums,left,right){
        if(left > right) return null;
        var mid = Math.floor((left + right) / 2);
        var node = new TreeNode(nums[mid]);
        node.left = trvasal(nums,left,mid-1);
        node.right = trvasal(nums,mid+1,right);
        return node;
    } 
    return trvasal(nums,0,nums.length - 1)
};

538.把二叉搜索树转换为累加树

相关链接:题目链接文章讲解 视频讲解

解题思路

代码实现

var convertBST = function(root) {
    // 右 中 左
    var pre =0;
    var travalsal = function(root){
        if(root == null) return;
        travalsal(root.right);
        root.val +=pre;
        pre = root.val;
        travalsal(root.left);
    }
    travalsal(root);
    return root;
};