leetcode173.二叉搜索树迭代器
直接维护一个数组和一个数组下标,中序遍历把二叉搜索树中的值按照顺序放入到数组中
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val = val; }* TreeNode(int val, TreeNode left, TreeNode right) {* this.val = val;* this.left = left;* this.right = right;* }* }*/
class BSTIterator {private List<Integer> list;private int index;public BSTIterator(TreeNode root) {list = new ArrayList<>();index = 0;inorderTraversal(root);}public int next() {return list.get(index++);}public boolean hasNext() {return index < list.size();}private void inorderTraversal(TreeNode root) {if (root != null) {inorderTraversal(root.left);list.add(root.val);inorderTraversal(root.right);}}
}/*** 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();*/