LeetCode 897. 递增顺序查找树

原题目:https://leetcode-cn.com/problems/increasing-order-search-tree/

 

思路:

中序遍历,之后重建树

 

代码:

class Solution {
public:
    queue q;
    void inorder(TreeNode* root){
        if(root==NULL) return;
        inorder(root->left);
        q.push(root->val);
        inorder(root->right);
        return;
    }
    TreeNode* build(){
        if(q.size()==0) return NULL;
        TreeNode* root = new TreeNode(q.front());
        q.pop();
        root->right = build();
        return root;
    }
    TreeNode* increasingBST(TreeNode* root) {
        inorder(root);
        return build();
    }
};

 

思路二:

改变树的链接方式

 

代码:

 

class Solution {
public:
    TreeNode* pre;
    TreeNode* increasingBST(TreeNode* root) {
        TreeNode* ans = new TreeNode(0);
        pre = ans;
        change(root);
        return ans->right;
    }
    void change(TreeNode* node){
        if(node==NULL) return;
        change(node->left);
        node->left = NULL;
        pre->right = node;
        pre = node;
        change(node->right);
    }
};

 

你可能感兴趣的:(LeetCode,DFS)