容易 将二叉树拆成链表(lintcode)

来源:互联网 发布:霓虹灯动画软件 编辑:程序博客网 时间:2024/04/28 13:53

 将一棵二叉树按照前序遍历拆解成为一个假链表。所谓的假链表是说,用二叉树的 right 指针,来表示链表中的 next 指针。

 注意事项

不要忘记将左儿子标记为 null,否则你可能会得到空间溢出或是时间溢出。

              1               \     1          2    / \          \   2   5    =>    3  / \   \          \ 3   4   6          4                     \                      5                       \                        6
 * Definition of TreeNode: * class TreeNode { * public: *     int val; *     TreeNode *left, *right; *     TreeNode(int val) { *         this->val = val; *         this->left = this->right = NULL; *     } * } */class Solution {public:    /**     * @param root: a TreeNode, the root of the binary tree     * @return: nothing     */    void flatten(TreeNode *root) {        // write your code here        if(root == NULL)        return;        while(root)        {        TreeNode *pre = root->left;        if(pre)            {                while(pre->right)            pre = pre->right;            pre->right = root->right;            root->right = root->left;            root->left = NULL;            }            root = root->right;        }    }};


0 0
原创粉丝点击