首页 > 编程语言 >代码随想录算法训练营第第15天 | 层序遍历10道题 、226.翻转二叉树 、101. 对称二叉树

代码随想录算法训练营第第15天 | 层序遍历10道题 、226.翻转二叉树 、101. 对称二叉树

时间:2024-05-22 22:09:03浏览次数:28  
标签:10 right return val 随想录 二叉树 null root left

层序遍历

看完本篇可以一口气刷十道题,试一试, 层序遍历并不难,大家可以很快刷了十道题。
题目链接/文章讲解/视频讲解:https://programmercarl.com/0102.二叉树的层序遍历.html

层序遍历,10道题,一一通过,比较简单

226.翻转二叉树 (优先掌握递归)

这道题目 一些做过的同学 理解的也不够深入,建议大家先看我的视频讲解,无论做过没做过,都会有很大收获。
题目链接/文章讲解/视频讲解:https://programmercarl.com/0226.翻转二叉树.html

/**
 * Definition for a binary tree node.
 * function TreeNode(val, left, right) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.left = (left===undefined ? null : left)
 *     this.right = (right===undefined ? null : right)
 * }
 */
/**
 * @param {TreeNode} root
 * @return {TreeNode}
 */
var invertTree = function(root) {
    if (root === null) return root;
    const stack = [root];
    while(stack.length){
        let len = stack.length;
        for (let i=0;i<len;i++) {
            let node = stack.shift();
            let left = node.left;
            node.left = node.right;
            node.right = left;
            node.left && stack.push(node.left);
            node.right && stack.push(node.right);
        }
    }
    return root;
};

/**
 * @param {TreeNode} root
 * @return {TreeNode}
 */
var invertTree = function(root) {
    if (root == null) return root;
    let left = root.left;
    root.left = root.right;
    root.right = left;
    root.left && invertTree(root.left);
    root.right && invertTree(root.right);
    return root;
};
  1. 对称二叉树 (优先掌握递归)

先看视频讲解,会更容易一些。
题目链接/文章讲解/视频讲解:https://programmercarl.com/0101.对称二叉树.html

function symmetry(left, right) {
    if (left ===null && right === null) {
        return true;
    } else if (left !== null && right === null) {
        return false;
    } else if (left === null && right !== null) {
        return false;
    } else if (left.val !== right.val) {
        return false;
    }

    let outside = symmetry(left.left, right.right);
    let inside = symmetry(left.right, right.left);
    return outside && inside;

}
/**
 * Definition for a binary tree node.
 * function TreeNode(val, left, right) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.left = (left===undefined ? null : left)
 *     this.right = (right===undefined ? null : right)
 * }
 */
/**
 * @param {TreeNode} root
 * @return {boolean}
 */
var isSymmetric = function(root) {
    if (root === null) return true;
    return symmetry(root.left, root.right);
};


标签:10,right,return,val,随想录,二叉树,null,root,left
From: https://www.cnblogs.com/yuanyf6/p/18207234

相关文章

  • P2606 [ZJOI2010] 排列计数
    P2606[ZJOI2010]排列计数树形dp序列中每个位置的限制只有另外一个位置,那么我们将这样的限制连线,就可以得到一棵树。在这题中,这棵树刚好是小根堆,一棵完全二叉树。题目就转化为一共有多少种小根堆。那么显然的\(a_1=1\),然后左子树和右子树分剩下的\([2,n]\),并且左右子树不互......
  • CSP历年复赛题-P1044 [NOIP2003 普及组] 栈
    原题链接:https://www.luogu.com.cn/problem/P1044题意解读:一组数入栈、出栈的方案数,如果了解卡特兰数,此题可以秒杀;如果不了解,也可以通过递归或者递推来解决;最次,可以通过DFS暴搜出方案数,当然对于n个数,一共有n次入栈、n次出栈,一共2n次,每次要么入栈要么出栈,总搜索次数在22n规模,n最......
  • CSP历年复赛题-P1045 [NOIP2003 普及组] 麦森数
    原题链接:https://www.luogu.com.cn/problem/P1045题意解读:要计算2p-1的位数和最后500位,实际上只需要计算2p,两者位数一致,前者比后者个位减1即可,且个位肯定不会是0,比较容易处理。解题思路:如果直接采用高精度乘法计算2p,p最大3.1*106,高精度所用数组最长大概9*105,一共最多计算3.......
  • CSP历年复赛题-P1043 [NOIP2003 普及组] 数字游戏
    原题链接:https://www.luogu.com.cn/problem/P1043题意解读:将n个环形数分成任意m组,组内求和再%10、负数转正,组间相乘,求所有分组方案中得到结果的最小值和最大值。解题思路:比赛题的首要目的是上分!此题一看就是DP,但是苦苦思索了半天,想不清楚状态表示,那么可以换换策略,先暴力得分再......
  • Java RMI遇到的Connection refused to Host: 127.x.x.x/192.x.x.x/10.x.x.x问题解决方
    问题故障解决记录--JavaRMIConnectionrefusedtohost:x.x.x.x....在学习JavaRMI时,我遇到了以下情况问题原因:可能大家的host是10或者192的私有地址,我估计都是和我一样的一个原因:/etc/hosts文件的配置问题(我是ubuntu系统下的实验环境),也就是主机名称和IP地址的映射关系......
  • lesson10
    单词colossaladj庞大的huge/great/immense/enormous/gigantic/titanictragicadj悲剧的,悲惨的comic喜剧的dramanic戏剧的linern班轮airlinern班机yachtn游艇ferry渡轮raft木筏dinghy橡皮艇canoe独木舟kayak激流运动的独木舟voyagen航行beonav......
  • 代码随想录算法训练营第一天|704,34,35(二分查找),27(双指针)
    二分查找1.使用条件:数组,升序,值不唯一。2.时间复杂度O(logn)可分为左闭右闭,左闭右开两种区间类型来求解。左闭右闭:left=0,right=nums.Length-1,while(left<=right),right=middle-1.左闭右开:left=0,right=nums.Length,while(left<right),right=middle.......
  • 算法随想录打卡第一天|704. 二分查找、27. 移除元素
    704.二分查找-力扣(LeetCode)自己的解法是这样的,超出了时间限制,现在觉得应该是在mid的计算中出了问题。然后在mid的转换中没有right减去1或者left加上1。这两点的问题。自己很习惯的方式是左闭合加上右闭合。可以省去很多对于临界值忘记考虑的麻烦。超时代码贴出:publicin......
  • 代码随想录算法训练营第十四天 | 二叉树遍历
    递归法文章讲解视频讲解递归三要素:1确定递归函数的参数和返回值2确定终止条件3确定单层递归的逻辑前序遍历题目链接递归的参数和返回值:传入当前节点和保存结果集的数组,不需要返回值终止条件:当前节点为空时单层递归逻辑:保存当前节点的值到结果集中classSolution......
  • 2024.05.10
    所花时间(包括上课): 1 h左右代码量(行): 200  左右搏客量(篇):1了解到的知识点: ref和reactive备注(其他): ref和reactivereactive在修改响应式对象的时候,要用Object.assign(car,{brand:'xiaomi',price:20})需要一个基本类型的响应式数据,必须使......