[算法][力扣226]翻转一颗二叉树

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

方式一:递归,自底向上

java 复制代码
// 反转一颗二叉树: 使用递归的方式的实现 -- 自底向上
    public TreeNode invertTree(TreeNode root) {
        // 递归跳出条件
        if (root == null) {
            return root;
        }

        // 先反转左子树
        TreeNode leftNode = invertTree(root.left);

        // 再反转右子树
        TreeNode rightNode = invertTree(root.right);

        // 再反转当前节点左右子树
        root.left = rightNode;
        root.right = leftNode;

        return root;
    }

方式二:递归,自顶向下

java 复制代码
public TreeNode invertTree2(TreeNode root) {
        TreeNode temp = root;
        doInvertTree(temp);
        return root;
    }

    // 反转一颗二叉树: 使用递归的方式的实现,自顶向下
    public void doInvertTree(TreeNode root) {
        // 递归跳出条件
        if (root == null) {
            return;
        }

        // 反转当前节点左右子树
        TreeNode tempNode = root.left;
        root.left = root.right;
        root.right = tempNode;

        // 先反转左子树
        invertTree(root.left);

        // 再反转右子树
        invertTree(root.right);
    }
相关推荐
阿正的梦工坊几秒前
【Rust】07-错误处理:Option、Result 与 ? 运算符
开发语言·算法·rust
烬羽4 分钟前
从零理解树与二叉树:用 JS 带你手撕遍历和递归
javascript·数据结构
YHL13 分钟前
🚀从零理解树与二叉树 —— 概念、实现与遍历
前端·javascript·数据结构
JieE21242 分钟前
JS 到底有多少种数据类型?从ECMA规范到内存本质,一文彻底搞懂
javascript·数据结构·面试
努力努力再努力wz1 小时前
【内存管理与高并发内存池系列】从 mmap 到 malloc:文件映射、匿名映射与 glibc 内存分配机制详解
linux·c语言·数据结构·数据库·c++·qt·链表
八解毒剂1 小时前
数据结构-平衡二叉树——对二叉搜索树的优化
数据结构·c++·算法
运行时记录2 小时前
别再手动写提示词了 — SkillOpt 让技能文档自己进化
算法
啦啦啦啦啦zzzz2 小时前
算法总结(二分查找、双指针)
c++·算法
qq_8573058192 小时前
python语法
开发语言·python·算法
DXM05213 小时前
第9期|从机器学习到深度学习:AI遥感解译的进化逻辑
人工智能·算法·计算机视觉