173. Binary Search Tree Iterator

来源:互联网 发布:淘宝嘉年华是什么活动 编辑:程序博客网 时间:2024/06/05 22:43

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. 

Credits:
Special thanks to @ts for adding this problem and creating all test cases.

这道题先用中序遍历把所有的数都存到arraylist中,再调用hasnext,next时直接从arraylist中调结果。代码如下:

 public class BSTIterator {    TreeNode root;    ArrayList<Integer> ls = new ArrayList<Integer>();    int point = 0;    int n = 0;        public BSTIterator(TreeNode root) {        this.root = root;        inorder(root);        n = ls.size();    }        private void inorder(TreeNode root) {        if(root == null) return;        if(root.left != null) inorder(root.left);        ls.add(root.val);        if(root.right != null) inorder(root.right);    }        /** @return whether we have a next smallest number */    public boolean hasNext() {        if(point < n) return true;        else return false;    }        /** @return the next smallest number */    public int next() {        return ls.get(point++);    }}

0 0
原创粉丝点击