力扣226.翻转二叉树(java)

题目来源

226. 翻转二叉树 - 力扣(LeetCode)

代码(dfs)

java 复制代码
/**
 * 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 root;

        Stack<TreeNode> stack = new Stack<>();
        stack.push(root);

        while(!stack.isEmpty()) {
            TreeNode node = stack.pop();

            if(node.right != null) stack.push(node.right);
            if(node.left != null) stack.push(node.left);

            swapNode(node);
        }
        return root;
    }
    //交换某结点左右子树
    private void swapNode(TreeNode node) {
        TreeNode tmp = node.left;
        node.left = node.right;
        node.right = tmp;
    }

}

代码分析

直接正常入栈就行,把栈顶结点直接交换左右子树就行。也就是,从根节点开始,交换左右子树,然后左节点,最后右结点。

相关推荐
爱吃涮毛肚的肥肥(暂时吃不了版)1 分钟前
Leetcode——181.超过经理收入的员工
算法·leetcode·职场和发展
醉颜凉2 分钟前
Seal^_^【送书活动第8期】——《ChatGLM3大模型本地化部署、应用开发与微调》
人工智能·职场和发展·送书活动·chatglm3大模型
Charlie_lll4 分钟前
力扣解题-接雨水
算法·leetcode
仰泳的熊猫6 分钟前
题目2580:蓝桥杯2020年第十一届省赛真题-分类计数
数据结构·c++·算法·蓝桥杯
qyzm6 分钟前
牛客周赛 Round 136
数据结构·python·算法
用户637818131196 分钟前
优先队列的使用
算法
qq_334903156 分钟前
C++与人工智能框架
开发语言·c++·算法
夕珩6 分钟前
Java 排序算法详解:冒泡排序、选择排序、堆排序
java·算法·排序算法
Magic--7 分钟前
从入门到精通:快速排序的核心原理、实现与优化
数据结构·算法·排序算法
weixin_649555677 分钟前
C语言程序设计第四版(何钦铭、颜晖)第十章函数与程序结构之统计完全平方数
c语言·数据结构·算法