美文网首页程序员
力扣 173 二叉搜索树迭代器

力扣 173 二叉搜索树迭代器

作者: zhaojinhui | 来源:发表于2020-08-26 03:07 被阅读0次

题意:给定一个二叉搜索书树,返回他的迭代器

思路:用stack实现树的中序遍历非递归

  1. 在构造函数中,把跟节点以及他的所有最左节点都加入stack
  2. next:每次stack弹出头节点,并把它返回,同时检查它的右节点是否为空,如果不为空,把右节点以及右节点的所有最左节点都加入stack
  3. hasNext:只需检查stack是否为空

思想:树的中序遍历非递归

复杂度:时间O(n),空间O(h) // h为树高

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class BSTIterator {
    Stack<TreeNode> stack;
    public BSTIterator(TreeNode root) {
        stack = new Stack<TreeNode>();
        TreeNode temp = root;
        while(temp != null) {
            stack.add(temp);
            temp = temp.left;
        }
    }
    
    /** @return the next smallest number */
    public int next() {
        TreeNode temp1 = stack.pop();
        TreeNode temp = temp1.right;
        while(temp != null) {
            stack.add(temp);
            temp = temp.left;
        }
        return temp1.val;
    }
    
    /** @return whether we have a next smallest number */
    public boolean hasNext() {
        return !stack.isEmpty();
    }
}

相关文章

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

    题意:给定一个二叉搜索书树,返回他的迭代器 思路:用stack实现树的中序遍历非递归 在构造函数中,把跟节点以及他...

  • LeetCode-173-二叉搜索树迭代器

    二叉搜索树迭代器 题目描述:实现一个二叉搜索树迭代器类BSTIterator ,表示一个按中序遍历二叉搜索树(BS...

  • 173. 二叉搜索树迭代器

    题目描述 实现一个二叉搜索树迭代器。你将使用二叉搜索树的根节点初始化迭代器。 调用 next() 将返回二叉搜索树...

  • 每日算法题—二叉搜索树迭代器

    题目描述 实现一个二叉搜索树迭代器,使用二叉搜索树的根节点初始化迭代器。调用 next() 将返回二叉搜索树中的下...

  • LeetCode173----二叉搜索树迭代器

    问题 实现一个二叉搜索树迭代器。你将使用二叉搜索树的根节点初始化迭代器。 调用 next() 将返回二叉搜索树中的...

  • Leetcode173. 二叉搜索树迭代器

    题目 C++解法 实现一个二叉搜索树迭代器。你将使用二叉搜索树的根节点初始化迭代器。 调用 next() 将返回二...

  • leetcode 173 二叉搜索树迭代器

    思路:二叉树的中序遍历是有序的!!!那就好搞了啊,回顾二叉树的中序遍历,栈的写法,照搬就好了。 先把所有左节点丢到...

  • 栈-N173-二叉搜索树迭代器

    题目 概述:实现一个二叉搜索树迭代器,实现迭代器的基本功能:按树中结点值从小到大的顺序迭代 hasNext():是...

  • 不同的二叉搜索树I和II

    不同的二叉搜索树I 给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种? 示例: 来源:力扣(...

  • LeetCode 每日一题 [68] 二叉搜索树的第k大节点

    LeetCode 二叉搜索树的第k大节点 [简单] 给定一棵二叉搜索树,请找出其中第k大的节点 来源:力扣(Lee...

网友评论

    本文标题:力扣 173 二叉搜索树迭代器

    本文链接:https://www.haomeiwen.com/subject/kuntsktx.html