理解题意以后这道题会比较简单,主要思路是这棵树是一颗排序二叉树,所以某节点的左子树都小于它,右子树都大于它,所以如果它的范围超过了规定范围,就可以用它的左右子树来代替它,然后对它的左右子树依次进行判断即可。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
class Solution { public: TreeNode* trimBST(TreeNode* root, int L, int R) { if(root==nullptr) return root; if(root->val>R) return trimBST(root->left,L,R); if(root->val<L) return trimBST(root->right,L,R); root->left=trimBST(root->left,L,R); root->right=trimBST(root->right,L,R); return root; } };
|