669. Trim a Binary Search Tree

来源:互联网 发布:华师网络教育平台 编辑:程序博客网 时间:2024/05/16 19:41

Given a binary search tree and the lowest and highest boundaries as L andR, trim the tree so that all its elements lies in [L, R] (R >= L). You might need to change the root of the tree, so the result should return the new root of the trimmed binary search tree.

Example 1:

Input:     1   / \  0   2  L = 1  R = 2Output:     1      \       2

Example 2:

Input:     3   / \  0   4   \    2   /  1  L = 1  R = 3Output:       3     /    2     / 1

根据BST树的性质,很容易想到前两句递归,但是当值在L,R中时稍微卡壳了一下,然后参考了下别人的,发现自己的思路是正确的,左右子树也是递归完成。


struct TreeNode* trimBST(struct TreeNode* root, int L, int R) {
    if(root==NULL) return NULL;
    if(root->val>R)
        return trimBST(root->left,L,R);
    else if(root->val<L)
        return trimBST(root->right,L,R);
    else{
        root->left=trimBST(root->left,L,R);
        root->right=trimBST(root->right,L,R);
        return root;
    }

}








原创粉丝点击