写点什么

LeetCode 题解:173. 二叉搜索树迭代器,递归,JavaScript,详细注释

用户头像
Lee Chen
关注
发布于: 2021 年 08 月 03 日
LeetCode题解:173. 二叉搜索树迭代器,递归,JavaScript,详细注释

原题链接:173. 二叉搜索树迭代器


解题思路:


  1. 对二叉搜索树进行中序遍历,即可按顺序得到二叉搜索树的每个值。

  2. 先对输入二叉搜索树进行中序遍历,将结果保存到数组list中。

  3. 使用一个指针index,始终指向next对应的取值位置。每次调用next,都将指针向后移动一位。如果index指向类型为numberhasNext返回true


/** * @param {TreeNode} root */var BSTIterator = function (root) {  this.list = []; // 使用数组存储每个节点的值  this.index = 0; // 用一个指针,始终指向下一个元素
// 使用中序遍历二叉搜索树,按顺序保存值到list const traversal = (node) => { // 如果节点为空,则退出 if (!node) { return; }
// 搜索左子节点 traversal(node.left); // 将中序遍历到的节点值,存入list this.list.push(node.val); // 搜索右子节点 traversal(node.right); }; // 中序遍历二叉搜索树欧 traversal(root);};
/** * @return {number} */BSTIterator.prototype.next = function () { // 将当前值返回,并向后移动指针 return this.list[this.index++];};
/** * @return {boolean} */BSTIterator.prototype.hasNext = function () { // 如果指针对应的值类型为number,表示下一项存在,否则为undefined return typeof this.list[this.index] === 'number';};
复制代码


发布于: 2021 年 08 月 03 日阅读数: 3
用户头像

Lee Chen

关注

还未添加个人签名 2018.08.29 加入

还未添加个人简介

评论

发布
暂无评论
LeetCode题解:173. 二叉搜索树迭代器,递归,JavaScript,详细注释