Leetcode--Java--226. 翻转二叉树
题目描述
翻转一棵二叉树。
样例描述
输入:4/ \2 7/ \ / \
1 3 6 9
输出:4/ \7 2/ \ / \
9 6 3 1
思路
方法一:递归 (也就是DFS)
- 不断地压栈,(根结点要翻转它左右子树,先让左右子树去翻转,左右子树的根结点想翻转也让各自的子树去翻转,一级一级递归下去,直到叶子结点,没有左右子树,往上返回,同时进行翻转)。
方法二:迭代,层序遍历BFS
- 将每一层的结点入队,只要队列不空,每拿出一个结点,就翻转其左右孩子(就算没有都是null,交换也不影响),然后看左右孩子是否为空,不为空就入队。
代码
递归
/*** 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;//先递归让左右子树都交换好if (root.left != null) invertTree(root.left);if (root.right != null) invertTree(root.right);TreeNode t = root.left;root.left = root.right;root.right = t;return root;}
}
迭代
/*** 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) {Deque<TreeNode> q = new LinkedList<>();if (root != null) q.offer(root);while (!q.isEmpty()) {TreeNode node = q.poll();//交换左右子树结点(空也没事,交换不影响)TreeNode t = node.left;node.left = node.right;node.right = t;//如果左右子树不为空,就加入队列if (node.left != null) q.offer(node.left);if (node.right != null) q.offer(node.right);}return root;}
}
Leetcode--Java--226. 翻转二叉树相关推荐
- leetcode系列-226.翻转二叉树
题目描述: 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点. 示例 1: 输入:root = [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1] /*** Def ...
- Java实现 LeetCode 226 翻转二叉树
226. 翻转二叉树 翻转一棵二叉树. 示例: 输入: 4/ \2 7/ \ / \ 1 3 6 9 输出: 4/ \7 2/ \ / \ 9 6 3 1 备注: 这个问题是受到 Max Howell ...
- 【LeetCode】【HOT】226. 翻转二叉树(递归)
[LeetCode][HOT]226. 翻转二叉树 文章目录 [LeetCode][HOT]226. 翻转二叉树 package hot;import java.util.ArrayDeque; im ...
- 算法leetcode|剑指 Offer 27. 二叉树的镜像|226. 翻转二叉树(rust很强)
文章目录 剑指 Offer 27. 二叉树的镜像|226. 翻转二叉树: 样例 1: 限制: 分析 题解 rust go c++ java python 原题传送门:https://leetcode. ...
- LeetCode:226. 翻转二叉树
226. 翻转二叉树 题目: 解题思路: 源码: 踩坑点: 题目: 解题思路: 用递归的方法将二叉树的左右节点互换,核心思想就是交换 源码: struct TreeNode* invertTree(s ...
- 226. 翻转二叉树【58】
难度等级:容易 上一篇算法: 543. 二叉树的直径[71] 力扣此题地址: 226. 翻转二叉树 - 力扣(Leetcode) 1.题目:226. 翻转二叉树 给你一棵二叉树的根节点 root ,翻 ...
- 代码随想录算法训练营第十五天| 102层序遍历、226.翻转二叉树、101. 对称二叉树
层序遍历 参考文章:代码随想录 解题思路: 层序遍历一个二叉树.就是从左到右一层一层的去遍历二叉树.这种遍历的方式和我们之前讲过的都不太一样. 需要借用一个辅助数据结构即队列来实现,队列先进先出,符合 ...
- 代码随想录【day 14 二叉树】| 层序遍历 226.翻转二叉树 101.对称二叉树
代码随想录[day 14 二叉树]| 层序遍历 226.翻转二叉树 101.对称二叉树 层序遍历 卡哥文解 视频讲解 题目链接:102.二叉树的层序遍历 解题思路 代码实现 题目链接:107.二叉树的 ...
- 代码随想录算法训练营第15天,102.二叉树的层序遍历、226.翻转二叉树、101.对称二叉树
102.二叉树的层序遍历.226.反转二叉树.101.对称二叉树 102.二叉树的层序遍历 二叉树的层次遍历,我们可以定义一个队列, 当访问到某一个节点时,我们将它存在的左右节点放入队列中,便可达到按 ...
- 代码随想录算法训练营day15 | 102. 二叉树的层序遍历、226. 翻转二叉树、101. 对称二叉树
102. 二叉树的层序遍历 class Solution { public:vector<vector<int>> levelOrder(TreeNode* root) {de ...
最新文章
- Python实现kNN算法
- canvas中文显示乱码 html5_浅析HTML5 Canvas的几种中文字体缩小方案
- CF B. Working out
- 7-3 符号三角形 (10 分)(思路+详解)
- [Redux/Mobx] Redux怎么添加新的中间件?
- excel保存超过15位数据不变科学计数法的方法
- 随想录(搭建自己嵌入式项目的编译系统)
- 一个收入很低的人,能装大款到什么地步?
- cordova APP 检查更新
- 枪火游侠服务器停机维护,腾讯《枪火游侠》公布国服停运公告 11月30日正式关服...
- 076 Apache的HBase与cdh的sqoop集成(不建议不同版本之间的集成)
- String类中重写Object中的equals方法源码解析
- OpenCV-Python教程(10、直方图均衡化)
- Ubuntu20.04下搜狗输入法安装配置(超精简)
- 机器学习(7)——安然数据集分析
- python打印不换行_python打印后如何不换行
- 14位125MSPS四通道ADC电路图讲解(通过后端数字求和增强SNR性能)_电工基础电路图讲解
- 怎么在ppt上设置文字滑动的效果html,PPT 中如何设置图片滚动切换效果
- swift之mutating关键字
- 复频域求零输入响应_零输入响应是齐次解的一部分