您的位置:首页 > 其它

LeetCode114—Flatten Binary Tree to Linked List

2016-04-07 11:53 471 查看

LeetCode114—Flatten Binary Tree to Linked List

原题

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

分析

最朴素的方法就是先序遍历把节点保存,然后在顺序构造不含左子树的树,网上看到有其他的方法,等学习研究了再更新。

代码

class Solution {
private:
void dfs(TreeNode*root, vector<TreeNode*>&Nodes)
{
if (root == NULL)
return;
Nodes.push_back(root);
dfs(root->left, Nodes);
dfs(root->right, Nodes);
}
public:
void flatten(TreeNode* root) {
if (root == NULL)
return;
vector<TreeNode*>Nodes;
dfs(root, Nodes);
int i;
root->left = NULL;
for (i = 0; i < Nodes.size() - 1; i++)
{
Nodes[i]->right = Nodes[i + 1];
Nodes[i]->left = NULL;
}
Nodes[i]->right = NULL;
root = Nodes[0];
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: