• Java实现 LeetCode 173 二叉搜索树迭代器


    173. 二叉搜索树迭代器

    实现一个二叉搜索树迭代器。你将使用二叉搜索树的根节点初始化迭代器。

    调用 next() 将返回二叉搜索树中的下一个最小的数。

    示例:
    在这里插入图片描述

    BSTIterator iterator = new BSTIterator(root);
    iterator.next(); // 返回 3
    iterator.next(); // 返回 7
    iterator.hasNext(); // 返回 true
    iterator.next(); // 返回 9
    iterator.hasNext(); // 返回 true
    iterator.next(); // 返回 15
    iterator.hasNext(); // 返回 true
    iterator.next(); // 返回 20
    iterator.hasNext(); // 返回 false

    提示:

    next() 和 hasNext() 操作的时间复杂度是 O(1),并使用 O(h) 内存,其中 h 是树的高度。
    你可以假设 next() 调用总是有效的,也就是说,当调用 next() 时,BST 中至少存在一个下一个最小的数。

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    class BSTIterator {
     private TreeNode root;
        private List<Integer> inOrder;
        private Iterator<Integer> it;
        //中序遍历
     
        
        private void inorder(TreeNode root){
            if(root!=null){
                inorder(root.left);
                inOrder.add(root.val);
                inorder(root.right);
            }
        }
        
        public BSTIterator(TreeNode root) {
            this.root=root;
            this.inOrder = new ArrayList<>();
            inorder(this.root);
            it=this.inOrder.iterator();
        }
        
        /** @return the next smallest number */
        public int next() {
            return this.it.next();
        }
        
        /** @return whether we have a next smallest number */
        public boolean hasNext() {
            if(this.it.hasNext())
                return true;
            return false;
        }
    }
    
    /**
     * Your BSTIterator object will be instantiated and called as such:
     * BSTIterator obj = new BSTIterator(root);
     * int param_1 = obj.next();
     * boolean param_2 = obj.hasNext();
     */
    
  • 相关阅读:
    Java实体类的属性类型与数据库表字段类型对应表
    MyBatis的settings设置描述
    Hibernate的属性配置
    eclipse快捷键
    2018年计划
    Django之Form组件归类
    Django之Form组件补充
    Django之Form组件
    Django之中间件
    Django之分页升级版本(组件)
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13075449.html
Copyright © 2020-2023  润新知