翻转二叉树(深搜-先序遍历-交换Node)
2015-10-27 17:38
501 查看
题目:翻转二叉树,例如
已知二叉树的节点定义如下:
分析:该题有个小故事: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.
该题可以使用深搜中的先序遍历的思路,依次交换左右TreeNode,注意是交换TreeNode,而不是交换TreeNode的值。下面是翻转的过程:
AC代码如下:
4 / \ 2 7 / \ / \ 1 3 6 9 to 4 / \ 7 2 / \ / \ 9 6 3 1
已知二叉树的节点定义如下:
class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } }
分析:该题有个小故事: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.
该题可以使用深搜中的先序遍历的思路,依次交换左右TreeNode,注意是交换TreeNode,而不是交换TreeNode的值。下面是翻转的过程:
4 4 4 4 / \ / \ / \ / \ 2 7 -> 7 2 -> 7 2 -> 7 2 / \ / \ / \ / \ / \ / \ / \ / \ 1 3 6 9 6 9 1 3 9 6 1 3 9 6 3 1
AC代码如下:
public TreeNode invertTree(TreeNode root) { if (root == null) { return null; } TreeNode tmp = root.left; root.left = root.right; root.right = tmp; invertTree(root.left); invertTree(root.right); return root; }
相关文章推荐
- NodeJS4.2环境搭建
- ubuntu安装不同版本的nodejs
- 019 Remove Nth Node From End of List [Leetcode]
- nodejs colors模块
- LeetCode OJ:Populating Next Right Pointers in Each Node(指出每一个节点的下一个右侧节点)
- 4.1 Route Between Nodes
- 前端工程筹建NodeJs+gulp+bower
- Populating Next Right Pointers in Each Node - LeetCode
- node服务端搭建学习笔记
- node.js(3) 模块加载机制
- node-webkit-MusicBox 基于nwjs ,html5 ,制作的音乐盒子
- Nodejs实战心得之eventproxy模块控制并发
- 开发node桌面级应用工具:apk转化epub
- Nodejs - 如何用 eventproxy 模块控制并发
- Spritekit游戏开发之SKSpriteNode(精灵)二
- Spritekit游戏开发之SKSpriteNode(精灵)一
- 2.3 Delete Middle Node
- hlist_head/hlist_node
- 欢迎使用CSDN-markdown编辑器
- windows下安装nodejs及框架express