leetcode 938.二叉搜索树的范围和
初始化一个队列,将根节点加入队列。 while队列不为空,取出队首节点。 如果节点为空,跳过。 根据节点的值与low、high的关系决定加入队列的子节点:
发布日期:2021-04-30 21:09:37
浏览次数:173
分类:精选文章
本文共 1758 字,大约阅读时间需要 5 分钟。
方法一:深度优先搜索思路
深度优先搜索是一种常用的方法来计算二叉搜索树的范围和。我们从树的根节点开始,逐层深入,直到叶子节点。以下是详细的思路分析:
根节点为空:如果根节点为空,直接返回0,因为没有节点需要计算。
根节点的值大于 high:由于二叉搜索树的右子树所有节点值均大于根节点,因此只需考虑左子树的范围和。
根节点的值小于 low:同理,左子树所有节点值均小于根节点,因此只需考虑右子树的范围和。
根节点的值在[low, high]范围内:这时,根节点的值需要加入总和,并递归地计算左子树和右子树的范围和。
以下是对应的代码实现:
public class Solution { public int rangeSumBST(TreeNode root, int low, int high) { if (root == null) { return 0; } if (root.val > high) { return rangeSumBST(root.left, low, high); } if (root.val < low) { return rangeSumBST(root.right, low, high); } return root.val + rangeSumBST(root.left, low, high) + rangeSumBST(root.right, low, high); }} 复杂度分析
- 时间复杂度:O(n),其中n是二叉搜索树的节点数。每个节点最多被访问一次。
- 空间复杂度:O(n)。空间复杂度主要取决于递归调用栈的深度。
方法二:广度优先搜索
广度优先搜索使用队列来实现,按层次遍历树节点。以下是详细的思路分析:
- 如果节点值大于high,加入左子树。
- 如果节点值小于low,加入右子树。
- 如果节点值在[low, high]范围内,加入左子树和右子树,并将节点值加到总和中。
以下是对应的代码实现:
import java.util.LinkedList;public class Solution { public int rangeSumBST(TreeNode root, int low, int high) { int sum = 0; LinkedList q = new LinkedList<>(); q.offer(root); while (!q.isEmpty()) { TreeNode node = q.poll(); if (node == null) { continue; } if (node.val > high) { q.offer(node.left); } else if (node.val < low) { q.offer(node.right); } else { sum += node.val; q.offer(node.left); q.offer(node.right); } } return sum; }} 复杂度分析
- 时间复杂度:O(n),其中n是二叉搜索树的节点数。每个节点最多被访问一次。
- 空间复杂度:O(n)。空间复杂度主要取决于队列的大小。
发表评论
最新留言
表示我来过!
[***.240.166.169]2026年06月19日 13时00分33秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
PHP 输入输出流合集
2023-02-28
php-兔子问题,斐波那契数列
2023-02-28
php-约瑟夫问题
2023-02-28
php.ini中常见的配置信息选项
2023-02-28
php.ini配置中有10处设置不当,会使网站存在安全问题
2023-02-28
PHP7 新特性
2023-02-28
PHP7+MySQL5.7+Nginx1.9. on Ubuntu 14.0
2023-02-28
php7.1.6 + redis
2023-02-28
php7中使用php_memcache扩展
2023-02-28
PHP7中十个需要避免的坑
2023-02-28
php7和PHP5对比的新特性和性能优化
2023-02-28
PHP7安装pdo_mysql扩展
2023-02-28
PHP7实战开发简单CMS内容管理系统(7) 后台登录架构 用户登录校验
2023-02-28
php7,从phpExcel升级到PhpSpreadsheet
2023-02-28
PHP8中match新语句的操作方法
2023-02-28
PHP:第一章——PHP中常量和预定义常量
2023-02-28
PHP:第一章——PHP中的位运算
2023-02-28
phpcms
2023-02-28
phpcms 2008 product.php pagesize参数代码注射漏洞
2023-02-28