您的位置:首页 > 职场人生

LeetCode 114 Flatten Binary Tree to Linked List

2014-08-15 14:17 525 查看
题目

Given a binary tree, flatten it to a linked list in-place.

For example,

Given
1
/ \
2   5
/ \   \
3   4   6


The flattened tree should look like:
1
\
2
\
3
\
4
\
5
\
6


思路

1 能够想到这其实是中序遍历的变形,就成功一半了。

2 一个节点左边的遍历好,然后处理一下,再遍历右边。

3处理的部分为:这个节点的左边设为null,右边接左边处理好的内容,再接原右边。

4 逻辑清楚了,代码自然也就清楚。

代码

public class Solution {
public void flatten(TreeNode root) {
if(root ==null){
return ;
}
TreeNode oldleft = root.left;
TreeNode oldright = root.right;
root.left = null;
flatten(left);
if(left!=null){
root.right = left;
TreeNode cur = left;
while(cur.right!=null){
cur = cur.right;
}
cur.right = right;
}
flatten(right);
}
}


15.4.14
可以用递归算法,更加简洁。看代码就能够理解意思
public class Solution {
public void flatten(TreeNode root) {
if(root == null){
return;
}
while(root!=null){
if(root.left!=null){
TreeNode cur = root.left;
while(cur.right!=null){
cur = cur.right;
}
cur.right = root.right;
root.right = root.left;
root.left =null;
}
root = root.right;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  面试笔试 leetcode