【LeetCode刷题-树】-- 156.上下翻转二叉树

156.上下翻转二叉树

image-20231216122253244

方法:自底向上迭代

/*** 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 upsideDownBinaryTree(TreeNode root) {if(root == null || root.left == null && root.right == null){return root;}Stack<TreeNode> stack = new Stack<>(); TreeNode tmp = root;while(tmp != null){stack.push(tmp);tmp = tmp.left; //一直找到最左的节点}TreeNode newRoot = stack.pop();while(!stack.isEmpty()){TreeNode node = stack.pop();TreeNode preLeft = node.left,preRight = node.right;preLeft.left = preRight;preLeft.right = node;node.left = null;node.right = null;}return newRoot;}
}

方法二:递归

/*** 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 upsideDownBinaryTree(TreeNode root) {if(root == null || root.left == null && root.right == null){return root;}TreeNode left = root.left,right = root.right;TreeNode newRoot = upsideDownBinaryTree(left);left.left = right;left.right = root;root.left = null;  //将root的左右节点都设为空,表示翻转之和root的左右节点不再是left和rightroot.right = null;return newRoot;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/282681.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蜂鸣器驱动电路设计原理图讲解

以下介绍的几种蜂鸣器驱动电路是针对单片机I/O口的驱动电路&#xff0c;适用于现行的压电式蜂鸣器。 压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。 当接通电源后&#xff08;1.5~15V直流工作电压&#xff09;,多谐振荡器起振,输出1.5~2.5kHZ…

特殊排序

title: 特殊排序 date: 2023-12-17 21:32:01 tags: 二分 categories: 题目大意 解题思路 交互&#xff1a;不知道大小关系&#xff0c;只能通过调用compare接口询问 根据数学归纳法&#xff0c;假设前 k − 1 k -1 k−1 个元素已经按要求排成一行&#xff0c;如果能确定第 k…

LRU 缓存机制_题解(一道经典的数据结构算法题)

LRU 缓存机制_题解&#xff08;一道经典的数据结构算法题&#xff09; 146. LRU 缓存 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类&#xff1a; LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存 int get(int k…

Linux---获取管理员权限的相关命令

1. sudo命令的使用 命令说明sudo -s切换到root用户&#xff0c;获取管理员权限sudo某个命令的执行需要获取管理员权限可以在执行命令前面加上sudo sudo -s效果图: sudo 命令效果图: 说明: 如果只是某次操作需要使用管理员权限建议使用 sudo , 也就是说临时使用管理器权限。…

强化学习--免模型预测与控制

免模型预测与控制 强化学习 免模型预测与控制免模型预测蒙特卡洛估计时序差分估计时序产分与蒙特卡洛的比较免模型控制Q-learning 免模型预测 蒙特卡洛估计 蒙特卡洛估计方法在强化学习中是免模型预测价值函数的方式之一&#xff0c;本质是一种统计模拟方法&#xff0c;它的发…

Mistral MOE架构全面解析

从代码角度理解Mistral架构 Mistral架构全面解析前言Mistral 架构分析分词网络主干MixtralDecoderLayerAttentionMOEMLP 下游任务因果推理文本分类 Mistral架构全面解析 前言 Mixtral-8x7B 大型语言模型 (LLM) 是一种预训练的生成式稀疏专家混合模型。在大多数基准测试中&…

【数据结构—队列的实现】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言 一、队列 1.1队列的概念及结构 二、队列的实现 2.1头文件的实现—Queue.h 2.2源文件的实现—Queue.c 2.3源文件的测试—test.c 三、测试队列实际数据的展示 3.…

vue3 使用 element-plus 侧边菜单栏多开收起时 出现 迟滞、卡顿的问题

遇到问题 vue3 使用 element-plus 侧边菜单栏多开收起时 出现 迟滞、卡顿的问题 这里多开二级&#xff0c;当点击上面的回收时&#xff0c;出现了卡顿现象&#xff0c;找了很久才发现是因为引入了icon图标 具体原因不详&#xff01;&#xff01;&#xff01;&#xff01;坑啊 …

《洛谷深入浅出进阶篇》简单数据结构

本篇文章内容如下&#xff0c;请耐心观看&#xff0c;将持续更新。 简单数组 简单栈 简单队列 简单链表 简单二叉树 简单集合 图的基本概念 二叉堆 线段树 树状数组与字典树 线段树进阶 简单数组&#xff1a; STL可变数组 vector " 我们首先要知道这个容器有什…

【总结】THUPC2024

队名&#xff1a;消灭智哥 队友&#xff1a;zbh&#xff0c;hrl 比赛前一天组的队。队名源于及其智慧的对面楼的宿管。 复赛就不用想了&#xff0c;就体验一下 ACM 的队伍赛制。 去年一题没切&#xff0c;被队友 szt 单人切 3 带飞。现在 szt 已经是高贵的华附哥了。 今年我…

arcgis更改服务注册数据库账号及密码

最近服务器数据库密码换了&#xff0c;gis服务也得换下数据库连接密码。传统官方的更改方式&#xff08;上传连接配置文件&#xff09;&#xff1a; ArcGIS Server数据库注册篇(I) — 更新数据库密码_arcgis server sde换密码-CSDN博客 方式太麻烦了&#xff0c;需要安装ArcG…

HarmonyOS云开发基础认证考试满分答案(100分)【全网最全-不断更新】【鸿蒙专栏-29】

系列文章&#xff1a; HarmonyOS应用开发者基础认证满分答案&#xff08;100分&#xff09; HarmonyOS应用开发者基础认证【闯关习题 满分答案】 HarmonyOS应用开发者高级认证满分答案&#xff08;100分&#xff09; HarmonyOS云开发基础认证满分答案&#xff08;100分&#xf…