zoukankan      html  css  js  c++  java
  • Binary Search Tree Iterator

    Binary Search Tree Iterator

    问题:

    Implement an iterator over a binary search tree (BST). Your iterator will be initialized with the root node of a BST.

    Calling next() will return the next smallest number in the BST.

    Note: next() and hasNext() should run in average O(1) time and uses O(h) memory, where h is the height of the tree.

    思路:

      中序遍历的非递归算法实现 栈

    我的代码:

    public class BSTIterator {
        Stack<TreeNode> stack = new Stack<TreeNode>();
        public BSTIterator(TreeNode root) {
            while(root != null)
            {
                stack.push(root);
                root = root.left;
            }
        }
    
        /** @return whether we have a next smallest number */
        public boolean hasNext() {
            return !stack.isEmpty();
        }
    
        /** @return the next smallest number */
        public int next() {
            TreeNode top = stack.pop();
            TreeNode right = top.right;
            if(right != null)
            {
                while(right != null)
                {
                    stack.push(right);
                    right = right.left;
                }
            }
            return top.val;
        }
    }
    View Code
  • 相关阅读:
    apk逆向工具总结
    DAY...
    DAY1-Flask项目
    Django笔记
    DAY8-Python学习笔记
    DAY7-Python学习笔记
    DAY6-Python学习笔记
    DAY5-Python学习笔记
    DAY4-Python学习笔记
    DAY3-Python学习笔记
  • 原文地址:https://www.cnblogs.com/sunshisonghit/p/4335834.html
Copyright © 2011-2022 走看看