当前位置: 首页 > news >正文

力扣173. 二叉搜索树迭代器

深度优先搜索

  • 思路:
    • 遍历二叉搜索树,左子树总比根节点小,右子树总比根节点大;
    • 先深度遍历左子树,然后返回其父节点,然后遍历其右子树节点;
    • 使用栈数据结构存储节点数据,借用其“后进先出”的特点;
/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class BSTIterator {
public:BSTIterator(TreeNode* root) : cur(root) {}int next() {while (cur != nullptr) {stk.push(cur);cur = cur->left;}cur = stk.top();stk.pop();int ret = cur->val;cur = cur->right;return ret;}bool hasNext() {return cur != nullptr || !stk.empty();}private:TreeNode* cur;std::stack<TreeNode*> stk;
};/*** Your BSTIterator object will be instantiated and called as such:* BSTIterator* obj = new BSTIterator(root);* int param_1 = obj->next();* bool param_2 = obj->hasNext();*/

http://www.lryc.cn/news/277667.html

相关文章:

  • 电脑找不到d3dcompiler43.dll怎么修复,教你5个可靠的方法
  • 5.3 Android BCC环境搭建(eadb版 上)
  • 【算法题】44. 通配符匹配
  • vscode配置与注意事项
  • 设计模式篇章(3)——七种结构型模式
  • Window端口占用处理
  • 算法实战(二)
  • 网工内推 | 上市公司网工,NP认证优先,最高15薪+项目奖金
  • 【LLM 论文阅读】NEFTU N E: LLM微调的免费午餐
  • JS新手入门笔记整理:对象
  • Python GIL 一文全知道!
  • 数据库级别的MD5加密(扩展)
  • Docker安装Jenkins,配置Maven和Java
  • 游戏分组(100用例)C卷 (JavaPythonC语言C++Node.js)
  • python函数装饰器保存信息
  • AI真正的Killer App 仍然缺席
  • Docker 镜像以及镜像分层
  • aigc 启动器 sd-webui-aki-v4 decode_base64_to_file
  • 【C++进阶05】AVL树的介绍及模拟实现
  • MySQL视图 索引 面试题
  • JAVA实现文件上传至阿里云
  • 设计模式之外观模式【结构型模式】
  • Qt QCheckBox复选按钮控件
  • 加速科技ST2500 数模混合信号测试设备累计装机量突破500台!
  • ASP.NETCore WebAPI 入门 杨中科
  • 问题 C: 活动选择
  • SpringBoot学习(五)-Spring Security配置与应用
  • Java解决删除子串后的字符串最小长度
  • 日志系统一(elasticsearch+filebeat+logstash+kibana)
  • 游戏版 ChatGPT,要用 AI 角色完善生成工具实现 NPC 自由