LeetCode系列114—二叉树展开为链表

题意

二叉树展开为链表

题解

方法一:递归遍历

class Solution {
    
    
public:
    void flatten(TreeNode* root) {
    
    
        postOrder(root);
    }

    TreeNode* postOrder(TreeNode* root) {
    
    
        if (root == nullptr) return nullptr;
        TreeNode* leftTree = postOrder(root->left);
        TreeNode* rightTree = postOrder(root->right);
        root->left = nullptr;
        root->right = leftTree;
        TreeNode* node = root;
        while (node->right) {
    
    
            node = node->right;
        }
        node->right = rightTree;
        return root;
    }
};
class Solution {
    
    
public:
    void flatten(TreeNode* root) {
    
    
        if (root == nullptr) return ;
        flatten(root->left);
        flatten(root->right);
        TreeNode* right = root->right;
        root->right = root->left;
        root->left = nullptr;
        while (root->right) {
    
    
            root = root->right;
        }
        root->right = right;
    }

Guess you like

Origin blog.csdn.net/younothings/article/details/120157794