Java实现 LeetCode 226 翻转二叉树
2024-10-09 06:27:23
226. 翻转二叉树
翻转一棵二叉树。
示例:
输入:
4
/ \
2 7
/ \ / \
1 3 6 9
输出:
4
/ \
7 2
/ \ / \
9 6 3 1
备注:
这个问题是受到 Max Howell 的 原问题 启发的 :
谷歌:我们90%的工程师使用您编写的软件(Homebrew),但是您却无法在面试时在白板上写出翻转二叉树这道题,这太糟糕了。
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
// 先序遍历--从顶向下交换
// public TreeNode invertTree(TreeNode root) {
// if (root == null) return null;
// // 保存右子树
// TreeNode rightTree = root.right;
// // 交换左右子树的位置
// root.right = invertTree(root.left);
// root.left = invertTree(rightTree);
// return root;
// }
//中序遍历
// public TreeNode invertTree(TreeNode root) {
// if (root == null) return null;
// invertTree(root.left); // 递归找到左节点
// TreeNode rightNode= root.right; // 保存右节点
// root.right = root.left;
// root.left = rightNode;
// // 递归找到右节点 继续交换 : 因为此时左右节点已经交换了,所以此时的右节点为root.left
// invertTree(root.left);
// }
//后序遍历
// public TreeNode invertTree(TreeNode root) {
// // 后序遍历-- 从下向上交换
// if (root == null) return null;
// TreeNode leftNode = invertTree(root.left);
// TreeNode rightNode = invertTree(root.right);
// root.right = leftNode;
// root.left = rightNode;
// return root;
// }
//层次遍历
public TreeNode invertTree(TreeNode root) {
// 层次遍历--直接左右交换即可
if (root == null) return null;
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);
while (!queue.isEmpty()){
TreeNode node = queue.poll();
TreeNode rightTree = node.right;
node.right = node.left;
node.left = rightTree;
if (node.left != null){
queue.offer(node.left);
}
if (node.right != null){
queue.offer(node.right);
}
}
return root;
}
}
最新文章
- 解读SDN的东西、南北向接口
- [转] 多进程下数据库环境的恢复:DB_REGISTER
- SQL补充
- SQL中行列转换Pivot
- Julia中文教程资源.txt
- HTML5新增结构标签
- The content of element type ";beans"; must match ";(description?,(import|alias|bean)*)
- WWDC2014之iOS使用动态库
- eclipse 比较好的插件
- jquery 中 (function( window, undefined ) {})(window)写法详解(转)
- 网站静态化处理—web前端优化—中(12)
- Ubuntu系统上安装搜狗拼音输入法sogou
- 重载Cocos2D生存期的方法
- Android hybrid App项目构建和部分基本开发问题
- UnicodeEncodeError: &#39;gbk&#39; codec can&#39;t encode character &#39;\xbb&#39; in position 30633: illegal multibyte sequence
- lanya
- scala flatmap、reduceByKey、groupByKey
- 蓝牙协议分析(11)_BLE安全机制之SM
- [100]awk运算-解决企业统计pv/ip问题
- 查看Andorid应用是32位还是64位
热门文章
- HDU 2005 (水)
- 关于tez-ui的";All DAGs";和";Hive Queries";页面信息为空的问题解决过程
- Linux基本命令(文件基操)
- Java注解的定义和使用
- 流复制-pg_start_backup(带自定义表空间)
- mysql 查询获取排名的方法(绝对有效)
- 欧拉函数 BZOJ2705
- #442-Find All Duplicates in an Array-数组中重复的数字
- 阿里云ECS封25端口导致wordpress无法发送邮件的解决
- JavaScript中foreach、map、filter、find、every、some的用法