【JavaScript版数据结构与算法面向大厂面试】第十二章 算法设计思想之“分而治之”

第十二章 算法设计思想之“分而治之”

12.1 分而治之简介

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

12.2 LeetCode: 374. 猜数字大小

在这里插入图片描述
在这里插入图片描述

var guessNumber = function(n){
    
    
	//写一个递归函数
    const rec=(low,high)=>{
    
    
        if(low>high){
    
    return;}//给一个跳出递归函数的条件
        const mid=Math.floor((low+high)/2);//取中间元素
        const res =guess(mid);//猜值
        if(res===0){
    
    //猜对了返回值
            return mid;
        }else if(res===1){
    
    //猜的值小了,继续在大的一半猜
            return rec(mid+1,high);
        }else{
    
    //猜的值大了,继续在小的一半猜
            return rec(1,mid-1);
        }
    };
    return rec(1,n);//返回值的范围
};

在这里插入图片描述
时间复杂度:log(n)
空间复杂度:log(n)

12.3 LeetCode: 226. 翻转二叉树

在这里插入图片描述
在这里插入图片描述

var invertTree = function (root) {
    
    
    if (!root) {
    
     return null; }//停止条件
    return {
    
    
        val: root.val;//根节点的值不变
        left: invertTree(root.right);//把翻转后的右子树放到左子树中
        right: invertTree(root.left);//把翻转后的左子树放到右子树中
    }
};

在这里插入图片描述

1.时间复杂度:log(n)
2.空间复杂度:最好log(h),h为树的高度 。最差O(n)

12.4 LeetCode: 100. 相同的树

在这里插入图片描述
在这里插入图片描述

var isSameTree = function (p, q) {
    
    
    if (!p && !q) return true;//当p和q都为空时,两棵树相同,返回true
    if (
        p && q && //p和q树存在
        p.val === q.val &&//p的根节点的值等于q的根节点的值
        isSameTree(p.left, q.left) &&//p的左子树等于q的左子树
        isSameTree(p.right, q.right)//p的右子树等于q的右子树
    ) {
    
    
        return true;//当p和q两棵树相同,返回true
    }
    return false;//当p和q两棵树不相同,返回false
};

在这里插入图片描述

1.时间复杂度:log(n)
2.空间复杂度:最好log(h),h为树的高度 。最差O(n)

12.5 LeetCode: 101. 对称二叉树

在这里插入图片描述
在这里插入图片描述

var isSymmetric = function (root) {
    
    
    if (!root) return true;//当根节点为空时,返回true
    const isMisrror = (l, r) => {
    
    
        if (!l && !r) return true;//跳出递归,当左子树为空且右子树也为空时,两树相同,返回true
        if (l && r &&左子树和右子树存在
            l.val === r.val &&//左子树根节点的值等于右子树根节点的值
            isMisrror(l.left, r.right) &&//左子树等于右子树
            isMisrror(l.right, r.left)//右子树等于左子树
        ) {
    
    
            return true;
        }
        return false;
        
    };
    return isMisrror(root.left, root.right);
};

在这里插入图片描述

1.时间复杂度:log(n)
2.空间复杂度:最好log(h),h为树的高度 。最差O(n)

12.6 分而治之总结

在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qiqizgl777/article/details/129161543