LeetCode:226翻转二叉树

方法一:递归法

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 null;
        }
        //左右节点交换
        TreeNode temp = root.right;
        root.right = root.left;
        root.left = temp;
        //递归左右节点
        invertTree(root.left);
        invertTree(root.right);

        return root;
    }
}

方法二:

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 null;
        }

        Queue<TreeNode> queue = new LinkedList<>();

        queue.offer(root);

        while(!queue.isEmpty()){
            TreeNode current = queue.poll();
            //交换左右节点
            TreeNode temp = current.left;
            current.left = current.right;
            current.right = temp;

            //左右节点不为空则入队
            if(current.left != null){
                queue.offer(current.left);
            }
            if(current.right != null){
                queue.offer(current.right);
            }
        } 
        return root;
    }
 }

迭代法思路:

先将根节点入队

while循环,只要队列不为空就交换当前要出队节点的左右节点,然后判断当前出队节点的下面是否还有左右节点,如果有就继续入队,循环。

爆栈,层序遍历,逐层打印。寻找最短路径使用队列;核心:new Queue -> offer(root) -> while(!isEmpty) -> poll() -> 处理逻辑 -> offer(children)

相关推荐
开开心心就好2 分钟前
打印机卡住打不了?一键清理卡死打印队列
服务器·开发语言·算法·pdf·ocr·idea·visual studio code
格物致胜工业数智技术5 分钟前
锂电纠偏测量那些坑,明治ETD-0612激光纠偏传感器怎么填?
人工智能·算法
垆边人似月.9 分钟前
带权区间调度,优先级可负
算法
重生之小比特10 分钟前
【算法拾光】双指针|三数之和 + 四数之和
算法
我爱工作&工作love我13 分钟前
P14359 [CSP-J 2025] 异或和
算法
茉莉玫瑰花茶13 分钟前
GO [ 数据格式 ]
服务器·网络·算法·golang
小poop15 分钟前
高级排序算法与性能对比——归并、非比较排序及总结
数据结构·算法·排序算法
aqiu11111115 分钟前
CodeTop按顺序刷题0003:LeetCode 206. 反转链表(迭代法图文详解与动态演示)
算法·leetcode·链表
果霸大叔42 分钟前
AI网关第8篇:AI 代理与负载均衡--多模型实例如何调度?
人工智能·算法·自然语言处理·负载均衡·ai-native
用户84913717547161 小时前
Redis 跳表用了"随机"的魔法,实现了比平衡树更快的查找!
数据结构·redis