LeetCode - Flatten Binary Tree to Linked List

解法一:recursion DFS

class Solution {
public:
    void flatten(TreeNode* root) {
        if(!root) return;
        if(root->left) flatten(root->left);
        if(root->right) flatten(root->right);
        TreeNode* temp = root->right;
        root->right = root->left;
        root->left = NULL;
        while(root->right) root = root->right;
        root->right = temp;
        
    }
};

解法二:non-recursion BFS

class Solution {
public:
    void flatten(TreeNode* root) {
        TreeNode* cur = root;
        while(cur){
            if(cur->left){
                TreeNode* temp = cur->left;
                while(temp->right) temp = temp->right;
                temp->right = cur->right;
                cur->right = cur->left;
                cur->left = NULL;
            }
            cur = cur->right;
        }
        
    }
};

猜你喜欢

转载自blog.csdn.net/real_lisa/article/details/82927300
今日推荐