156. Binary Tree Upside Down
来源:互联网 发布:平价时尚欧美女装知乎 编辑:程序博客网 时间:2024/06/05 21:55
Given a binary tree where all the right nodes are either leaf nodes with a sibling (a left node that shares the same parent node) or empty, flip it upside down and turn it into a tree where the original right nodes turned into left leaf nodes. Return the new root.
For example:Given a binary tree
{1,2,3,4,5}
,1 / \ 2 3 / \4 5
return the root of the binary tree [4,5,2,#,#,3,1]
.
4 / \ 5 2 / \ 3 1
confused what "{1,#,2,3}"
means? > read more on how binary tree is serialized on OJ.
OJ's Binary Tree Serialization:
The serialization of a binary tree follows a level order traversal, where '#' signifies a path terminator where no node exists below.
Here's an example:
1 / \ 2 3 / 4 \ 5The above binary tree is serialized as
"{1,2,3,#,#,4,#,#,5}"
.This is not a very intuitive problem for me, I have to spent quite a while drawing figures to understand it. As shown in the figure, 1 shows the original tree, you can think about it as a comb, with 1, 2, 4 form the bone, and 3, 5 as the teeth. All we need to do is flip the teeth direction as shown in figure 2. We will remove the link 1--3, 2--5, and add link 2--3, and 4--5. And node 4 will be the new root.
As the recursive solution, we will keep recurse on the left child and once we are are done, we found the newRoot, which is 4 for this case. At this point, we will need to set the new children for node 2, basically the new left node is 3, and right node is 1. Here is the recursive solution:
递归求解。代码如下:/** * 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 upsideDownBinaryTree(TreeNode root) { if (root == null || root.left == null) { return root; } TreeNode newRoot = upsideDownBinaryTree(root.left); root.left.left = root.right; root.left.right = root; root.left = null; root.right = null; return newRoot; }}
- 156. Binary Tree Upside Down
- 156. Binary Tree Upside Down
- Binary Tree Upside Down
- Binary Tree Upside Down
- Binary Tree Upside Down
- Binary Tree Upside Down
- Binary Tree Upside Down
- Binary Tree Upside Down
- Binary Tree Upside Down
- leetcode-156.Binary Tree Upside Down
- [Leetcode]156.Binary Tree Upside Down
- Leetcode 156. Binary Tree Upside Down
- LeetCode—156. Binary Tree Upside Down
- LeetCode 156. Binary Tree Upside Down
- [Leetcode] Binary Tree Upside Down
- LeetCode Binary Tree Upside Down
- leetcode Binary Tree Upside Down
- [Leetcode] Binary Tree Upside Down
- linux\windows上mongodb的安装与配置,以及开启php扩展
- 获取iOS任意线程调用堆栈(二)符号化理论:Mach-o文件结构
- Android中Canvas绘图之PorterDuffXfermode使用及工作原理详解
- 蚂蚁金服成立科学智囊团,机器学习之父Michael I.Jordan担任主席
- PHP PSR-1 规范
- 156. Binary Tree Upside Down
- Android Fragment 与 Fragment管理器
- 获取iOS任意线程调用堆栈(三)符号化理论:从Mach-o结构分析类名方法名
- 查找成绩排名第二的学生
- Windows中的时间(SYSTEMTIME和FILETIME)
- 面试题26复杂连标的复制
- Android应用自定义View绘制方法手册
- python入门(@property,@*.setter)
- 获取iOS任意线程调用堆栈(四)符号化实战