Untitled
unknown
plain_text
a year ago
1.7 kB
7
Indexable
import java.util.ArrayList;
import java.util.List;
class TreeNode {
int val;
TreeNode left, right;
TreeNode(int val) {
this.val = val;
this.left = null;
this.right = null;
}
}
public class BSTIteratorRecursive {
private List<Integer> nodes;
private int currentIndex;
public BSTIteratorRecursive(TreeNode root) {
nodes = new ArrayList<>();
currentIndex = 0;
inorderTraversal(root, nodes); // Perform recursive inorder traversal.
}
// Inorder traversal to fill the list.
private void inorderTraversal(TreeNode node, List<Integer> nodes) {
if (node == null) return;
// Traverse left subtree.
inorderTraversal(node.left, nodes);
// Visit current node.
nodes.add(node.val);
// Traverse right subtree.
inorderTraversal(node.right, nodes);
}
// Check if there is a next element.
public boolean hasNext() {
return currentIndex < nodes.size();
}
// Get the next element.
public int next() {
return nodes.get(currentIndex++);
}
public static void main(String[] args) {
// Example usage:
TreeNode root = new TreeNode(7);
root.left = new TreeNode(3);
root.right = new TreeNode(15);
root.right.left = new TreeNode(9);
root.right.right = new TreeNode(20);
BSTIteratorRecursive iterator = new BSTIteratorRecursive(root);
while (iterator.hasNext()) {
System.out.print(iterator.next() + " "); // Output: 3 7 9 15 20
}
}
}
Editor is loading...
Leave a Comment