leetCode 669 修剪二叉搜索树(二叉查找树)

题目链接:点击查看

题目描述:

给定一个二叉查找树和两个整数 L R,且 L < R,试修剪此二叉查找树,使得修剪后所有节点的值都在 [L, R] 的范围内。

输入输出:

输入:root = [1,0,2], low = 1, high = 2
输出:[1,null,2]
输入:root = [3,0,4,null,2,null,null,1], low = 1, high = 3
输出:[3,2,null,1]

题目分析:

可以利用二叉查找树的大小关系,通过递归对树进行处理。详见如下代码。

代码:

TreeNode *trimBST(TreeNode*root,int L,int R)
{
   if(!root)
   {
      return root;	
   }	
   if(root->val>R) // 说明现在root较大,root不在范围内,则需要去找root左边子树	  
   {
   	  return trimBST(root->left,L,R); 
   }
   if(root->valright,L,R);
   }
   root->left=trimBST(root->left,L,R);//继续构建其左右子树 
   root->right=trimBST(root->right,L,R);
   return root;
} 

 

你可能感兴趣的:(早年算法竞赛学过的知识点,二叉树,数据结构,leetcode,算法,c++)