您的位置:首页 > 其它

LeetCode - Flatten Binary Tree to Linked List

2016-01-13 13:44 465 查看
题目:

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

Hints:
If you notice carefully in the flattened tree, each node's right child points to the next node of a pre-order traversal.

思路:

递归,先flatten左边的,再flatten右边的,然后进行连接

package tree;

public class FlattenBinaryTreeToLinkedList {

public void flatten(TreeNode root) {
if (root == null) return;
flatten(root.left);
flatten(root.right);
if (root.left != null) {
TreeNode tmp = root.right;
root.right = root.left;
root.left = null;
TreeNode rightMostNode = root;
while (rightMostNode.right != null) {
rightMostNode = rightMostNode.right;
}
rightMostNode.right = tmp;
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: