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

    }
}

测试通过了

相关推荐
覆东流2 小时前
7.Java数组
java·开发语言·后端
m0_719084112 小时前
限流和获取请求ip的方法
java
lzhdim2 小时前
提高 SQL 语句执行速度的方法
java·开发语言·数据库·sql·oracle
深漂的华哥3 小时前
Ruoyi-Plus前后端分离场景下,数据加密传输
java·spring boot·后端·开源·maven·ruoyi
落魄大学生之流水线上谋生计4 小时前
Java锁全面指南:从基础概念到企业级应用
java·开发语言
爱学习的小白柏5 小时前
【AI问数技术】多Agent协同架构:查询规划/SQL生成/洞察分析/报告生成
java·网络·人工智能·windows·sql·架构·llama
码匠许师傅6 小时前
【C++ 面试真题】30. 聊聊 C++ 的互斥锁与读写锁
java·c++·面试
沙盘客6 小时前
AFSIM 示例解读(03)· 六自由度飞行仿真 six_dof(下):机场运作与弹道导弹投送
java·javascript·经验分享
CHANCE V6 小时前
集合排序和流排序
java
16月6日-晴7 小时前
Java面向对象进阶—多态
java·开发语言