【手把手带你刷LeetCode】——11.二叉搜索树的范围和(DFS)

举报
安然无虞 发表于 2022/05/26 23:27:56 2022/05/26
【摘要】 【前言】 今天是力扣打卡第11天! 感谢铁汁们的陪伴,一起加油鸭!! 在第9天的时候写过这道题的递归解题方法,其实DFS使用的解题思想就是递归,所以大同小异啦。大家简单看一下纯递归的解法: https://blog.csdn.net/weixin_57544072/article/details/12119660...

【前言】

今天是力扣打卡第11天!

感谢铁汁们的陪伴,一起加油鸭!!

在第9天的时候写过这道题的递归解题方法,其实DFS使用的解题思想就是递归,所以大同小异啦。大家简单看一下纯递归的解法:

https://blog.csdn.net/weixin_57544072/article/details/121196600?spm=1001.2014.3001.5502

原题:二叉搜索树的范围和(DFS解法)

题目描述:

给定二叉搜索树的根结点 root,返回值位于范围 [low, high] 之间的所有结点的值的和。 

示例1:

 

 


  
  1. 输入:root = [10,5,15,3,7,null,18], low = 7, high = 15
  2. 输出:32

示例2:


  
  1. 输入:root = [10,5,15,3,7,13,18,1,null,6], low = 6, high = 10
  2. 输出:23

题解 :

全都在代码里头咯。

代码执行:


  
  1. /**
  2. * Definition for a binary tree node.
  3. * struct TreeNode {
  4. * int val;
  5. * struct TreeNode *left;
  6. * struct TreeNode *right;
  7. * };
  8. */
  9. int rangeSumBST(struct TreeNode* root, int low, int high){
  10. // //方法一:递归法
  11. // //找边界
  12. // if(root == NULL){
  13. // return 0;
  14. // }
  15. // //左子树
  16. // int leftSum = rangeSumBST(root->left, low, high);
  17. // //右子树
  18. // int rightSum = rangeSumBST(root->right, low, high);
  19. // int result = leftSum + rightSum;
  20. // //判断根节点
  21. // if(root->val >= low && root->val <= high){
  22. // result += root->val;
  23. // }
  24. // return result;
  25. //方法二:DFS
  26. //判断特殊情况
  27. if(root == NULL){
  28. return 0;
  29. }
  30. //如果根节点的值大于high,那么右子树不满足,此时只需要判断左子树
  31. if(root->val > high){
  32. return rangeSumBST(root->left, low, high);
  33. }
  34. //如果根节点的值小于low,那么左子树一定不满足,此时只需要判断右子树
  35. if(root->val < low){
  36. return rangeSumBST(root->right, low, high);
  37. }
  38. //否则如果根节点的值在low和high之间,那么三者都需要判断
  39. return root->val + rangeSumBST(root->left, low, high) + rangeSumBST(root->right, low, high);
  40. }

复杂度分析:

时间复杂度:O(N), 取决于二叉搜索树的节点数;

空间复杂度:O(N),取决于递归调用栈空间的开销。

总结:

今天是力扣打卡第11天!

时间很紧,博主和铁汁们一起坚持,加油!! 

 

 

文章来源: bit-runout.blog.csdn.net,作者:安然无虞,版权归原作者所有,如需转载,请联系作者。

原文链接:bit-runout.blog.csdn.net/article/details/121202376

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。