代码随想录算法训练营第十四天| 226.翻转二叉树、 101. 对称二叉树、104.二叉树的最大深度、 111.二叉树的最小深度

46 阅读1分钟

226.翻转二叉树

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

解题思路

递归

代码实现

var invertTree = function(root) {
    var reverse = function(node){
        if(!node) return;
        var temp = node.right;
        node.right = node.left;
        node.left = temp;
        reverse(node.left);
        reverse(node.right);
    }
    reverse(root);
    return root;
};

101. 对称二叉树

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

解题思路

递归

代码实现

var isSymmetric = function(root) {
    var isSym = function(left,right){
        if(!left && !right ){
            return true;
        }
        if((!left && right) || (left && !right)){
            return false;
        }
        if(left && right && left.val !== right.val){
            return false;
        }
        return isSym(left.left,right.right) && isSym(left.right,right.left);
    }
    return isSym(root.left,root.right);
};

104.二叉树的最大深度

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

解题思路

递归 代码实现

var maxDepth = function(root) {
    if(!root) return 0;
    var level,node;
    var queue =[[root,1]];
    while(queue.length){
        [node,level] =queue.shift();
        if(node.left) queue.push([node.left,level + 1]);
        if(node.right) queue.push([node.right,level + 1]);
    }
    return level;
    
};

111.二叉树的最小深度

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

解题思路

递归

代码实现

var minDepth = function(root) {
    if(!root) return 0;
    var node,level;
    var queue = [[root,1]];
    while(queue.length){
        [node,level] = queue.shift();
        if(!node.left && !node.right) return level;
        if(node.left) queue.push([node.left, level + 1])
        if(node.right) queue.push([node.right, level + 1])
    }
    return level;
};