package com.shekhargulati.random.tree; import java.util.Objects; public class Tree<T> { T item; Tree<T> left; Tree<T> right; Tree<T> parent; } class TreeOperations { public <T extends Comparable<? super T>> Tree<T> search(Tree<T> tree, T item) { if (Objects.equals(tree.item, item)) { return tree; } if (tree.item.compareTo(item) < 0) { return search(tree.left, item); } else { return search(tree.right, item); } } public <T> T min(Tree<T> tree) { if (tree.left == null) { return tree.item; } return min(tree.left); } public <T> T max(Tree<T> tree) { if (tree.right == null) { return tree.item; } return max(tree.right); } }