LeetCode 114. Flatten Binary Tree to Linked List

 1 class Solution {
 2 public:
 3     void flatten(TreeNode* root) {
 4         if(!root) return;
 5         flatten(root->left);
 6         flatten(root->right);
 7         
 8         TreeNode* right = root->right;
 9         root->right = root->left;
10         root->left = NULL;
11         while(root->right){
12             root = root->right;
13         }
14         root->left = NULL;
15         root->right = right;
16     }
17 };

原本以为最后flatten的树必须是按顺序按小到大的,这样一来

          3

   1            4

2     5

这棵树左右子树flatten后左边是1-2-5,右边是4,4还要插入左子树。后来发现想多了,只需要所有节点均无左子树即可,但是还是要按照一定顺序的。

题意仍不失很明确,留坑。

题目要求的顺序是前序,即root - root->left - root->right。

将上面这棵树输入:

Your input
[3,1,4,2,5]
Your answer
[3,null,1,null,2,null,5,null,4]
Expected answer
[3,null,1,null,2,null,5,null,4]   即确实是前序。


还有其他算法,未看,留坑。
posted @ 2016-02-24 16:40  co0oder  阅读(249)  评论(0编辑  收藏  举报