[刷题]Implement Iterator of Binary Search Tree

来源:互联网 发布:java oa办公系统源码 编辑:程序博客网 时间:2024/06/05 03:35

[LintCode]Implement Iterator of Binary Search Tree

/** * Definition of TreeNode: * public class TreeNode { *     public int val; *     public TreeNode left, right; *     public TreeNode(int val) { *         this.val = val; *         this.left = this.right = null; *     } * } * Example of iterate a tree: * Solution iterator = new Solution(root); * while (iterator.hasNext()) { *    TreeNode node = iterator.next(); *    do something for node * }  */public class Solution {    //@param root: The root of binary tree.    ArrayList<TreeNode> list;    int index = 0; //指向下一个元素    public Solution(TreeNode root) {        // 2015-4-22 比较笨的方法需要O(n)的额外空间        list = inorder(root);    }        private ArrayList<TreeNode> inorder(TreeNode root) {        ArrayList<TreeNode> rst = new ArrayList<>();        if (root == null) {            return rst;        }                ArrayList<TreeNode> left = inorder(root.left);        ArrayList<TreeNode> right = inorder(root.right);                rst.addAll(left);        rst.add(root);        rst.addAll(right);        return rst;    }    //@return: True if there has next node, or false    public boolean hasNext() {        int len = list.size();        return index < len;    }        //@return: return next node    public TreeNode next() {        return list.get(index++);    }}





0 0
原创粉丝点击