首页 > 其他分享 >13_翻转二叉树

13_翻转二叉树

时间:2023-11-28 20:14:53浏览次数:31  
标签:13 right TreeNode val 二叉树 poll left root 翻转

翻转二叉树

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

示例 1:

img

输入:root = [4,2,7,1,3,6,9]
输出:[4,7,2,9,6,3,1]

示例 2:

img

输入:root = [2,1,3]
输出:[2,3,1]

示例 3:

输入:root = []
输出:[]

【思路】基本思想就是想要翻转二叉树,只需要把每一个节点的左右孩子交换一下就可以了。关键在于遍历顺序,前中后序应该如何选择呢?

遍历的过程中去翻转每一个节点的左右孩子就可以达到整体翻转的效果。


import java.util.LinkedList;
import java.util.Queue;

/**
 * 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 {
    /*
    // 法一:BFS
    public TreeNode invertTree(TreeNode root) {
        if (root == null) return root;
        Queue<TreeNode> queue = new LinkedList<>();
        queue.add(root);
        while (!queue.isEmpty()) {
            int levelSize = queue.size();
            while (levelSize-- > 0) {
                TreeNode poll = queue.poll();
                swap(poll);
                if (poll.left != null) {
                    queue.add(poll.left);
                }
                if (poll.right != null) {
                    queue.add(poll.right);
                }
            }
        }
        return root;
    }

    */
    /**
     * 方法二:
     	前后序遍历都可以,中序不行,因为先左孩子交换孩子,再根交换孩子(做完后,右孩子已经变成了原来的左孩子),再右孩子交换孩子(此时其实是对原来的左孩子做交换)
     */
    public TreeNode invertTree(TreeNode root) {
        if (root == null) {
            return null;
        }
        invertTree(root.left);
        invertTree(root.right);
        swap(root);
        return root;
    }

        //交换左、右孩子节点
        public void swap(TreeNode root) {
            TreeNode temp = root.left;
            root.left = root.right;
            root.right = temp;
        }

}

标签:13,right,TreeNode,val,二叉树,poll,left,root,翻转
From: https://www.cnblogs.com/codingbao/p/17862872.html

相关文章

  • P5132 Cozy Glow之拯救小马国
    每个关联值只会在先拿的神器那里被算到一次,那下界就是每个关联值与法力较小的神器法力值的乘积之和。按法力值从小到大取神器就可以取到下界。但由于出题人过于粗心,导致矩阵不对称正确的是左下角的半个,而且最后可能缺失若干个数,并且缺失的数等于最后输入的那个数。所以需要使用......
  • Python实现完全二叉树
    给定一个元素序列(如列表),递归的创建一颗完全二叉树完整代码如下#!/usr/bin/envpython3classTreeNode:"""Nodeofcompletetree"""def__init__(self,data=0):self.data=dataself.left=Noneself.right=Nonedefb......
  • i5-13500H VS. 锐龙7 7840H对比测试:酷睿AI画图3倍于对手、续航更强
    一、前言:i5-13500H与锐龙77840H的越级对比不同于桌面Zen4处理器所采用的CPU-Die与I/ODie分离的Chiplets设计方案,为了降低功耗,笔记本端的Zen4构架锐龙处理器采用的是单Die设计,同时将三级缓存从32MB砍半到16MB,因此在性能上必然不如桌面版,也比不上酷睿13代移动版。此前我们对比过......
  • openGauss学习笔记-133 openGauss 数据库运维-例行维护-日维护检查项
    openGauss学习笔记-133openGauss数据库运维-例行维护-日维护检查项133.1检查openGauss状态通过openGauss提供的工具查询数据库和实例状态,确认数据库和实例都处于正常的运行状态,可以对外提供数据服务。检查实例状态gs_check-Uomm-iCheckClusterState检查参数openG......
  • P1970 [NOIP2013 提高组] 花匠
    显然只选峰或者谷,所以记录当前走势是向上还是向下,出现转折时答案加一即可。因为存在相同的元素,所以开头的走势要特判,把最前面连续相同的一段看成一个元素,因为不确定会转变成哪种走势。后面遇到相同则可以正常做,因为前面走势已经确定了,相当于自动忽略了相同的元素。......
  • 13、oracle查看锁表
    oracle查看锁表1、查看以及执行解锁表SELECTDISTINCT'altersystemkillsession'''||s.sid||','||s.serial#||',@'||s.inst_id||'''immediate;'ASkill_session_scripts,......
  • es13
    前言与许多其他编程语言一样,JavaScript也在不断发展。每年,该语言都会通过新功能变得更加强大,使开发人员能够编写更具表现力和简洁的代码。ES13(ECMAScript2022)新特性1.类在ES13之前,类字段只能在构造函数中声明。与许多其他语言不同,无法在类的最外层作用域中声明或定义它们......
  • Fatal signal 11 (SIGSEGV) at 0x0000130f (code=1), thread xxx (Thread-xx)
    导致应用程序崩溃问题分析与解决:--复现--分析--解决最后先展示与问题相关的代码片:09-0413:26:32.826F/libc(572):Fatalsignal11(SIGSEGV)at0x0000130f(code=1),xxxx844(Thread-46)09-0413:26:32.936I/DEBUG(103):*************************......
  • 12_二叉树的最小深度
    二叉树的最小深度给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明:叶子节点是指没有子节点的节点。示例1:输入:root=[3,9,20,null,null,15,7]输出:2示例2:输入:root=[2,null,3,null,4,null,5,null,6]输出:5【思路】当遍......
  • 2023-2024-1 20231309 《计算机基础与程序设计》第九周学习总结
    2023-2024-120231309《计算机基础与程序设计》第八周学习总结作业信息这个作业属于哪个课程2023-2024-1-计算机基础与程序设计这个作业要求在哪里2023-2024-1计算机基础与程序设计第九周作业这个作业的目标作业正文2023-2024-120231309《计算机基础与程......