Java114 LeeCode 翻转二叉树

翻转二叉树

给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。

先想思路,看题解,对照题解思路一不一样,很一样直接开始写,没思路直接看题解

思路:root 遍历 交换左右子树 左子树先存储到数组 左子树=右子树

java 复制代码
class Solution {
	public TreeNode invertTree(TreeNode root) {
		//递归函数的终止条件,节点为空时返回
		if(root==null) {
			return null;
		}
		//下面三句是将当前节点的左右子树交换
		TreeNode tmp = root.right;
		root.right = root.left;
		root.left = tmp;
		//递归交换当前节点的 左子树
		invertTree(root.left);
		//递归交换当前节点的 右子树
		invertTree(root.right);
		//函数返回时就表示当前这个节点,以及它的左右子树
		//都已经交换完了
		return root;
	}
}

作者:王尼玛
链接:https://leetcode.cn/problems/invert-binary-tree/solutions/73159/dong-hua-yan-shi-liang-chong-shi-xian-226-fan-zhua/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。



为啥飘红了?

java 复制代码
import javax.swing.tree.TreeNode;

/**
 * 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;
 *     }
 * }
 */
public class Solution2 {
    public TreeNode invertTree(TreeNode root) {
// 定义数组,存储节点 注释
        //从最底层节点考虑 如果遍历到最底层 位空 返回空
       if(root==null){
        return null;
       }
//定义多个 存储任意字符元素的数组 注释
        //交换 当前节点 根左右交换
        //
        TreeNode tmp=root.right;//错误 定义tmp  因为 root.right是Treenode格式 所以定义tmp也是Treenode格式
       root.right=root.left;
       root.left=tmp;
       //为啥飘红了?
        //再次调用本方法 每个当前节点的左右都进行执行 当前节点的左右节点的左右节点进行交换 一直持续到没有左右节点 返回空 持续到最底层 返回空
        //倒数第一层返回本身节点 及底下空
        invertTree(root.left);
        invertTree(root.right);
        return root;//返回当前节点 最后一层的下一层返回空 最后一层返回本节点 及底下空 倒数第二层节点 返回 本节点及左右节点 持续返回i

    }
}

测试通过了

相关推荐
不吃香菜学java3 小时前
Redis的java客户端
java·开发语言·spring boot·redis·缓存
captain3763 小时前
事务___
java·数据库·mysql
北漂Zachary3 小时前
四大编程语言终极对比
android·java·php·laravel
小江的记录本3 小时前
【网络安全】《网络安全常见攻击与防御》(附:《六大攻击核心特性横向对比表》)
java·网络·人工智能·后端·python·安全·web安全
嗑嗑嗑瓜子的猫5 小时前
Java!它值得!
java·开发语言
2401_895521346 小时前
【Spring Security系列】Spring Security 过滤器详解与基于JDBC的认证实现
java·后端·spring
皮卡蛋炒饭.6 小时前
线程的概念和控制
java·开发语言·jvm
一只大袋鼠6 小时前
MyBatis 入门详细实战教程(一):从环境搭建到查询运行
java·开发语言·数据库·mysql·mybatis
程序员老邢6 小时前
【人生底稿・番外篇 05】我的电影江湖:从录像带时代,到港片陪伴的青春岁月
java·程序人生·职场发展·娱乐
sonnet-10296 小时前
函数式接口和方法引用
java·开发语言·笔记