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)

相关推荐
To_OC5 小时前
LC 51 N 皇后:我以为难的是回溯,结果栽在了对角线下标
javascript·算法·leetcode
2401_841495645 小时前
【操作系统】进程同步与互斥实验报告
c++·算法·操作系统·进程·并发·同步·互斥
爱刷碗的苏泓舒9 小时前
PPP-AR 中的参考星选取:数学原理、评价指标与切换处理
算法·gnss·模糊度固定·ppp-ar·星间单差·参考星·卫星端偏差
烬羽12 小时前
递归老写崩?一个"退回"公式,把回溯题变成填空题
javascript·深度学习·算法
闪电悠米12 小时前
力扣hot100-41.缺失的第一个正数-原地哈希详解
数据结构·算法·哈希算法
WL学习笔记13 小时前
堆(数据结构)
数据结构·
星空露珠13 小时前
28种颜色对应名称,
开发语言·数据库·算法·游戏·lua
QXWZ_IA15 小时前
桥梁数字孪生怎么落地?
人工智能·科技·算法·智能硬件·政务
Kel15 小时前
输出层与反分词(Output Layer & Detokenization)
人工智能·算法·架构