import java.util.ArrayList; class BinarySearchTree { private Node root; public BinarySearchTree() { } public BinarySearchTree(Node root) { this(); this.root = root; } public Node getMin() { Node temp =root; Node prev = null; while(temp!=null) { prev = temp; temp = temp.getLeft(); } return prev; } public Node getMax() { Node temp =root; Node prev = null; while(temp!=null) { prev = temp; temp = temp.getRight(); } return prev; } private Node contains(int k) { Node temp =root; while(temp!=null) { if(k>temp.getData()) { temp= temp.getRight(); } else if(k stack = new ArrayList(); Node temp = root; while(temp!=null) { stack.add(temp); if(temp.getData()> k) { temp=temp.getLeft(); } else if(temp.getData() stack = new ArrayList(); Node temp = root; while(temp!=null) { stack.add(temp); if(temp.getData()> k) { temp=temp.getLeft(); } else if(temp.getData()