leetcode_c++:树: Flatten Binary Tree to Linked List(114)

来源:互联网 发布:hbo美剧推荐知乎 编辑:程序博客网 时间:2024/05/29 07:51

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

For example,
Given

         1        / \       2   5      / \   \     3   4   6

he flattened tree should look like:

   1    \     2      \       3        \         4          \           5            \             6

把一棵树变成一长条。
(C++)DFS,先把左右两边的子树处理好,再合并。


算法


class Solution {public:    void flatten(TreeNode *root) {        vector<TreeNode*> v, stack;        stack.push_back(root);        while(stack.size()>0){            TreeNode* node = stack.back();            stack.pop_back();            v.push_back(node);            if (node && node->right){                stack.push_back(node->right);            }            if (node && node->left){                stack.push_back(node->left);            }        }        v.push_back(NULL);        for(int i=0; i<v.size(); i++){            if (v[i]){                v[i]->left = NULL;                v[i]->right = v[i+1];            }        }    }};
0 0
原创粉丝点击