import java.util.*;
import java.lang.*;
import java.io.*;

class Ideone
{
	public static void main (String[] args) throws java.lang.Exception
	{
		BTree<Integer> btree = new BTree<Integer>();
		
		// ①二分木にノードを追加する
		btree.add(Integer.valueOf(2));
		
		// ②二分木からノードを削除する
		btree.delete(Integer.valueOf(2));
	}
}


class BTree<T extends Comparable>
{
	private class Node<T extends Comparable>
	{
		T item = null;
		Node<T> left = null;
		Node<T> right = null;
		
		void add(T item) {
			if (this.item == null) {
				this.item = item;
			} else {
				if (this.item.compareTo(item) < 0) {
					if (left == null) {
						left = new Node<T>();
					}
					left.add(item);
				} else {
					if (right == null) {
						right = new Node<T>();
					}
					right.add(item);
				}
			}
		}
		
		boolean delete(T item) {
			if (this.item != null) {
				if (this.item.compareTo(item) == 0) {
					this.item = null;
					return true;
				}
			}
			if (left != null) {
				if (left.delete(item)) {
					return true;
				}
			}
			if (right != null) {
				if (right.delete(item)) {
					return true;
				}
			}
			return false;
		}
	}
	
	private Node<T> root = new Node<T>();
	
	public void add(T item) {
		root.add(item);
	}
	
	public boolean delete(T item) {
		return root.delete(item);
	}
}