Invert a binary tree.

     4
/ \
2 7
/ \ / \
1 3 6 9

to

     4
/ \
7 2
/ \ / \
9 6 3 1

Trivia:
This problem was inspired by this original tweet by Max Howell:

Google: 90% of our engineers use the software you wrote (Homebrew), but you can’t invert a binary tree on a whiteboard so fuck off.

代码如下:

/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public TreeNode invertTree(TreeNode root) {
if (root == null || (root.left == null) && (root.right == null))
return root;
root=invertTreeLR(root,root.left, root.right);
return root;
} public TreeNode invertTreeLR(TreeNode root,TreeNode left, TreeNode right) { //left,right位临时引用
if (left == null && right != null) {
left = right;
right = null;
left=invertTreeLR(left,left.left, left.right);
} else if (left != null && right == null) {
right = left;
left = null;
right=invertTreeLR(right,right.left, right.right);
} else if (left == null && right == null){ } else {
TreeNode tmp = null;
tmp = left;
left = right;
right = tmp;
left=invertTreeLR(left,left.left, left.right);
right=invertTreeLR(right,right.left, right.right); }
root.left=left;
root.right=right;
return root;
}
}

  运行结果:

最新文章

  1. PL/0编译器实践---后记
  2. colpick-jQuery颜色选择器使用说明
  3. LSM存储模型
  4. hdu 4069 福州赛区网络赛I DLC ***
  5. iOS 获取系统音量
  6. 格式化输出星期几 C#
  7. 事件流处理框架NEsper for .NET z
  8. 一个Socket连接管理池(心跳机制)
  9. 虚拟机Q&A
  10. 老李分享:《Linux Shell脚本攻略》 要点(一)
  11. Nginx 常用配置整理
  12. java第一次作业0
  13. 【三分模板】洛谷P3382三分模板
  14. Spark1.4从HDFS读取文件运行Java语言WordCounts并将结果保存至HDFS
  15. string format的各类格式及用法
  16. Node.js(day6)
  17. Javascript FormData实例
  18. Vue命令行工具vue-cli
  19. XShell发送命令到全部会话
  20. 二维码API接口

热门文章

  1. Jenkins初探
  2. android数据存储之File
  3. 高效能团队协作的JIRA实践
  4. Java OCR 图像智能字符识别技术,可识别中文
  5. flume ng 问题点
  6. nova分析(5)—— nova-conductor
  7. [转]UOS 中的虚拟网络设备
  8. yarn的调度策略
  9. DG_Oracle DataGuard Switchover主备节点切换(案例)
  10. ERP_基于Oracle SOA的企业服务总线整合