1、题目描述
Given a binary search tree and the lowest and highest boundaries as L
and R
, 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.
题目的意思是给定一个二叉查找树,和两个值。删除掉树中所有不在两个值范围内的节点。
2、题目分析
由于二叉查找树的递归定义和数据有序的特点,使用递归方法解决二叉查找树是比较理想的。
3、代码
TreeNode* trimBST(TreeNode* root, int L, int R) { if( root == NULL )
return NULL; if( root->val < L )
{
return trimBST(root->right,L,R);
} if(root->val > R )
{
return trimBST(root->left,L,R);
} root->left = trimBST(root->left,L,R);
root->right = trimBST(root->right,L,R); return root; }