public Node search(Node root, int key){
        if(root == null){
            return null;
        }
        if(root.data == key){
            return root;
        }else if(root.data < key){
            return search(root.right, key);
        }else{
            return search(root.left, key);
        }
    }
Date 04/11/2015
@author tusroy

Youtube link - https://youtu.be/zm83jPHZ-jA

Given a binary search tree and a key, return node which has data as this key or return
null if no node has data as key.

Solution 
Since its BST for every node check if root.data is key and if not go either left or
right depending on if root.data is greater or less than key

Time complexity is O(n) for non balanced BST
Time complexity is O(logn) for balanced BST

Test cases:
1) null tree
2) Tree with one node and key is that node
3) Tree with many nodes and key does not exist
4) Tree with many nodes and key exists
src/com/interview/tree/BSTSearch.java