首页 > 编程语言 >代码随想录算法训练营第14天 | 复习二叉树翻转

代码随想录算法训练营第14天 | 复习二叉树翻转

时间:2024-07-17 15:11:37浏览次数:17  
标签:right TreeNode 14 val 随想录 二叉树 null root left

2024年7月17日

递归法翻转二叉树
易错:要考虑节点为空的情况,以及写好边界条件。

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public TreeNode invertTree(TreeNode root) {
        if(root==null){
            return null;
        }
        return reverse(root);
    }

    public TreeNode reverse(TreeNode root){
        if(root.left==null && root.right!=null){
            root.left=root.right;
            reverse(root.left);
            root.right=null;
            return root;
        }
        if(root.left!=null && root.right==null){
            root.right=root.left;
            reverse(root.right);
            root.left=null;
            return root;
        }
        if(root.left==null && root.right==null){
            return root;
        }
        TreeNode temp = root.left;
        root.left = root.right;
        root.right = temp;
        reverse(root.left);
        reverse(root.right);
        return root;
    }
}

标签:right,TreeNode,14,val,随想录,二叉树,null,root,left
From: https://www.cnblogs.com/hailicy/p/18307390

相关文章

  • thinkphp或laravel连接sql server 2014数据库
    问题描述:平时使用最多为mysql数据库,目前有项目数据库为sqlserver2014,列出连接全过程1.配置thinkphp或laravel的config/database.php文件后,配置sql对应的配置如下:'sqlsrv'=>['driver'=>'sqlsrv','host'=>'localhost','port'=>......
  • 二叉树 部分定义与性质
    针对于知识回顾/复习,发现一些博客对于一些名词的定义各不相同,于是自己对于部分容易混淆的定义作一个简单的记录。详细关于二叉树的内容可以看:二叉树-Hello算法,部分博客内容来自其中。名词定义1.层层(Level):二叉树中的所有节点可以根据与根节点的距离分成不同的层次。根节点位......
  • PC XMind v24.01.14362 解锁版安装教程 (全球领先的商业思维导图软件)
    前言XMind是一款专业的全球领先的商业思维导图软件,在国内使用广泛,拥有强大的功能、包括思维管理、商务演示、与办公软件协同工作等功能。它采用全球先进的EclipseRCP软件架构,是集思维导图与头脑风暴于一体的可视化思考工具,能用来捕捉想法、理清思路、管理复杂信息并促进团队协......
  • 初学Python必须知道的14个强大单行代码
    引言:Python的魅力与单行代码的重要性Python以其简洁明了的语法、丰富的内置函数和强大的第三方库深受广大开发者喜爱。尤其对于编程小白来说,学习Python就像打开了一扇通向编程世界的大门。而单行代码,作为Python魅力的一部分,不仅能展现其语言的优雅与高效,更能帮助初学者快速掌......
  • iOS开发基础114-YYCache
    YYCache是一个高性能、易用的缓存组件,广泛用于iOS开发中。其设计宗旨是高效且灵活,可以处理不同类型的缓存需求。以下将介绍YYCache的常见应用场景,并深入分析其底层原理。应用场景1.图片缓存在展示大量图像的应用(比如社交媒体应用)中,缓存机制可以大幅减少网络请求,提升用户......
  • 代码随想录算法训练营第26天 | 回溯02:39. 组合总和、40.组合总和II、131.分割回文串
    代码随想录算法训练营第26天|回溯02:39.组合总和、40.组合总和II、131.分割回文串组合总和https://leetcode.cn/problems/combination-sum/代码随想录https://programmercarl.com/0039.组合总和.html40.组合总和IIhttps://leetcode.cn/problems/combination-sum-ii/desc......
  • 代码随想录算法训练营第24天 |
    代码随想录算法训练营第24天|回溯基础理论、第77题.组合、216.组合总和III、回溯基础理论代码随想录https://programmercarl.com/回溯算法理论基础.html#题目分类第77题.组合https://leetcode.cn/problems/combinations/description/代码随想录https://programmercarl.c......
  • 代码随想录之哈希表
    1、有效的字母异位词给定两个字符串s和t,编写一个函数来判断t是否是s的字母异位词。注意:若s和t中每个字符出现的次数都相同,则称s和t互为字母异位词。示例1:输入:s="anagram",t="nagaram"输出:true示例2:输入:s="rat",t="car"输出:......
  • LeetCode第257题:二叉树的所有路径的Java实现
    摘要LeetCode第257题要求生成二叉树的所有从根节点到叶子节点的路径。本文将介绍两种Java解决方案:迭代法和递归法。1.问题描述给定一个二叉树的根节点,按照从根到叶的顺序遍历所有路径,并将它们作为列表的列表返回。2.示例分析输入:[1,2,3,null,null,4]'输出:[[1,2],[1,......
  • 代码随想录刷题Day 14 二叉树part02
    226.翻转二叉树//这道题其实就是遍历二叉树,然后交换每个节点的左右子节点即可。这里我就使用了一个栈来存储需要遍历的节点,每次循环弹出一个,然后交换其左右子节点就好了classSolution{publicTreeNodeinvertTree(TreeNoderoot){Stack<TreeNode>stack=new......