题目描述

翻转一棵二叉树。

样例描述

输入:4/   \2     7/ \   / \
1   3 6   9
输出:4/   \7     2/ \   / \
9   6 3   1

思路

方法一:递归 (也就是DFS

  1. 不断地压栈,(根结点要翻转它左右子树,先让左右子树去翻转,左右子树的根结点想翻转也让各自的子树去翻转,一级一级递归下去,直到叶子结点,没有左右子树,往上返回,同时进行翻转)。

方法二:迭代,层序遍历BFS

  1. 将每一层的结点入队,只要队列不空,每拿出一个结点,就翻转其左右孩子(就算没有都是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. 翻转二叉树相关推荐

  1. leetcode系列-226.翻转二叉树

    题目描述: 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点. 示例 1: 输入:root = [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1] /*** Def ...

  2. Java实现 LeetCode 226 翻转二叉树

    226. 翻转二叉树 翻转一棵二叉树. 示例: 输入: 4/ \2 7/ \ / \ 1 3 6 9 输出: 4/ \7 2/ \ / \ 9 6 3 1 备注: 这个问题是受到 Max Howell ...

  3. 【LeetCode】【HOT】226. 翻转二叉树(递归)

    [LeetCode][HOT]226. 翻转二叉树 文章目录 [LeetCode][HOT]226. 翻转二叉树 package hot;import java.util.ArrayDeque; im ...

  4. 算法leetcode|剑指 Offer 27. 二叉树的镜像|226. 翻转二叉树(rust很强)

    文章目录 剑指 Offer 27. 二叉树的镜像|226. 翻转二叉树: 样例 1: 限制: 分析 题解 rust go c++ java python 原题传送门:https://leetcode. ...

  5. LeetCode:226. 翻转二叉树

    226. 翻转二叉树 题目: 解题思路: 源码: 踩坑点: 题目: 解题思路: 用递归的方法将二叉树的左右节点互换,核心思想就是交换 源码: struct TreeNode* invertTree(s ...

  6. 226. 翻转二叉树【58】

    难度等级:容易 上一篇算法: 543. 二叉树的直径[71] 力扣此题地址: 226. 翻转二叉树 - 力扣(Leetcode) 1.题目:226. 翻转二叉树 给你一棵二叉树的根节点 root ,翻 ...

  7. 代码随想录算法训练营第十五天| 102层序遍历、226.翻转二叉树、101. 对称二叉树

    层序遍历 参考文章:代码随想录 解题思路: 层序遍历一个二叉树.就是从左到右一层一层的去遍历二叉树.这种遍历的方式和我们之前讲过的都不太一样. 需要借用一个辅助数据结构即队列来实现,队列先进先出,符合 ...

  8. 代码随想录【day 14 二叉树】| 层序遍历 226.翻转二叉树 101.对称二叉树

    代码随想录[day 14 二叉树]| 层序遍历 226.翻转二叉树 101.对称二叉树 层序遍历 卡哥文解 视频讲解 题目链接:102.二叉树的层序遍历 解题思路 代码实现 题目链接:107.二叉树的 ...

  9. 代码随想录算法训练营第15天,102.二叉树的层序遍历、226.翻转二叉树、101.对称二叉树

    102.二叉树的层序遍历.226.反转二叉树.101.对称二叉树 102.二叉树的层序遍历 二叉树的层次遍历,我们可以定义一个队列, 当访问到某一个节点时,我们将它存在的左右节点放入队列中,便可达到按 ...

  10. 代码随想录算法训练营day15 | 102. 二叉树的层序遍历、226. 翻转二叉树、101. 对称二叉树

    102. 二叉树的层序遍历 class Solution { public:vector<vector<int>> levelOrder(TreeNode* root) {de ...

最新文章

  1. Python实现kNN算法
  2. canvas中文显示乱码 html5_浅析HTML5 Canvas的几种中文字体缩小方案
  3. CF B. Working out
  4. 7-3 符号三角形 (10 分)(思路+详解)
  5. [Redux/Mobx] Redux怎么添加新的中间件?
  6. excel保存超过15位数据不变科学计数法的方法
  7. 随想录(搭建自己嵌入式项目的编译系统)
  8. 一个收入很低的人,能装大款到什么地步?
  9. cordova APP 检查更新
  10. 枪火游侠服务器停机维护,腾讯《枪火游侠》公布国服停运公告 11月30日正式关服...
  11. 076 Apache的HBase与cdh的sqoop集成(不建议不同版本之间的集成)
  12. String类中重写Object中的equals方法源码解析
  13. OpenCV-Python教程(10、直方图均衡化)
  14. Ubuntu20.04下搜狗输入法安装配置(超精简)
  15. 机器学习(7)——安然数据集分析
  16. python打印不换行_python打印后如何不换行
  17. 14位125MSPS四通道ADC电路图讲解(通过后端数字求和增强SNR性能)_电工基础电路图讲解
  18. 怎么在ppt上设置文字滑动的效果html,PPT 中如何设置图片滚动切换效果
  19. swift之mutating关键字
  20. 复频域求零输入响应_零输入响应是齐次解的一部分

热门文章

  1. Mac版office word保存后退出文件莫名被删除问题
  2. 基于一种交互式的光伏组件特性曲线算法(Matlab代码实现)
  3. hive-计算直播同时在线人数最大值
  4. Mapbar API 简单使用
  5. K8S 初识 +踩坑, ubuntu安装教程1
  6. C语言-计算圆面积。
  7. webRTC(四):Webrtc音视频数据采集录制采集屏面数据
  8. 【人工智能】从GPT-3到AGI:人工智能的进化发展与未来
  9. 西瓜书笔记4: 决策树
  10. 【工程化】icon图标的获取与使用