LeetCode - Flatten Binary Tree to Linked List

题意

把一个链表弄成一条链

思路

先序遍历一下,记录上一结点,把上一结点的left变为0,right变为当前结点。

代码

class Solution {
    TreeNode *last;
public:
    void DFS(TreeNode *root)
    {
        if (root != 0)
        {
            TreeNode *l = root->left;
            TreeNode *r = root->right;  
            if (last == 0) last = root;
            else
            {
                last->left = 0;
                last->right = root;
                last = root;           
            }
            DFS(l);
            DFS(r);
        }
    }
    void flatten(TreeNode *root) {
        last = 0;
        DFS(root);
    }
};

Powered by Jekyll and Theme by solid