p142 二叉搜索树的区间和(leetcode 938)
时间:2020-04-18
本文章向大家介绍p142 二叉搜索树的区间和(leetcode 938),主要包括p142 二叉搜索树的区间和(leetcode 938)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
一:解题思路
方法一:递归法 Time:O(n),Space:O(n)
方法二:迭代法 Time:O(n),Space:O(n)
二:完整代码示例 (C++版和Java版)
方法一C++:
class Solution { public: int rangeSumBST(TreeNode* root, int L, int R) { if (root == NULL) return 0; if (root->val < L) return rangeSumBST(root->right,L,R); if (root->val > R) return rangeSumBST(root->left,L,R); return root->val + rangeSumBST(root->left, L, R) + rangeSumBST(root->right,L,R); } };
方法一Java:
class Solution { public int rangeSumBST(TreeNode root, int L, int R) { if(root==null) return 0; if(root.val<L) return rangeSumBST(root.right,L,R); if(root.val>R) return rangeSumBST(root.left,L,R); return root.val+rangeSumBST(root.left,L,R)+rangeSumBST(root.right,L,R); } }
方法二C++:
class Solution { public: int rangeSumBST(TreeNode* root, int L, int R) { if (root == NULL) return 0; int sum = 0; stack<TreeNode*> s; s.push(root); while (!s.empty()) { TreeNode* node = s.top(); s.pop(); if (node == NULL) continue; if (node->val < L) s.push(node->right); else if (node->val > R) s.push(node->left); else { sum += node->val; s.push(node->left); s.push(node->right); } } return sum; } };
方法二Java:
class Solution { public int rangeSumBST(TreeNode root, int L, int R) { if(root==null) return 0; int sum=0; Stack<TreeNode> s=new Stack<>(); s.push(root); while (!s.empty()) { TreeNode node=s.pop(); if(node==null) continue; if(node.val<L) s.push(node.right); else if(node.val>R) s.push(node.left); else { sum+=node.val; s.push(node.left); s.push(node.right); } } return sum; } }
原文地址:https://www.cnblogs.com/repinkply/p/12725021.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- JVM学习第二天(垃圾回收器和内存分配策略)大章
- JVM学习第一天(虚拟机的前世今生与与Java的内存区域)
- Android进阶:Binder那么弱怎么面大厂?
- Mybatis源码学习第七天(PageHelper分析)
- 【小程序】728- 小程序如何生成海报分享朋友圈
- Mybatis源码学习第七天(插件源码分析)
- Mybatis源码学习第七天(插件开发原理)
- Mybatis源码学习第六天(核心流程分析)之Executor分析(补充)
- 无法用排他锁锁定该数据库,以执行该操作。 (Microsoft SQL Server,错误: 5030)
- Spring security OAuth2.0认证授权学习第四天(SpringBoot集成)
- php hash算法类
- Spring security OAuth2.0认证授权学习第三天(认证流程)
- uni-app搜索历史记录功能实现
- [903]linux文件删除后磁盘空间没有释放
- Spring如何实现AOP,请不要再说cglib了!