zoukankan      html  css  js  c++  java
  • 173 Binary Search Tree Iterator 二叉搜索树迭代器

    实现一个二叉搜索树迭代器。你将使用二叉搜索树的根节点初始化迭代器。
    调用 next() 将返回二叉搜索树中的下一个最小的数。
    注意: next() 和hasNext() 操作的时间复杂度是O(1),并使用 O(h) 内存,其中 h 是树的高度。

    详见:https://leetcode.com/problems/binary-search-tree-iterator/description/

    Java实现:

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    class BSTIterator {
        
        private Stack<TreeNode> stk=new Stack<TreeNode>();
        public BSTIterator(TreeNode root) {
            while(root!=null){
                stk.push(root);
                root=root.left;
            }
        }
        
        /** @return the next smallest number */
        public int next() {
            TreeNode node=stk.pop();
            int val=node.val;
            if(node.right!=null){
                node=node.right;
                while(node!=null){
                    stk.push(node);
                    node=node.left;
                }
            }
            return val;
        }
        
        /** @return whether we have a next smallest number */
        public boolean hasNext() {
            return !stk.isEmpty();
        }
    }
    
    /**
     * 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();
     */
    

    参考:https://www.cnblogs.com/grandyang/p/4231455.html

  • 相关阅读:
    cocos2d-x 3.0 事件分发机制
    cocos2d-x Schedule详解
    OSG设置警告等级
    OSG四元数与欧拉角之间的转换
    编译OSG_FBX插件
    RakNet发送与接收数据
    RakNet基本教程
    IE不能上网,但是其他浏览器可以
    OSG计时器与时间戳
    添加OSG各种事件处理器
  • 原文地址:https://www.cnblogs.com/xidian2014/p/8733319.html
Copyright © 2011-2022 走看看