Binary Search Tree in Java

    /* Program to implement search function, count nodes function and three traversal functions of a binary tree using recursion */

      import java.io.*;
    class TreeNode
    {
        TreeNode left,right;
        int data;
        public TreeNode()
        {
            data=0;
            left=right=null;
        }
        public TreeNode(int n)
        {
            data=n;
            left=right=null;
        }
        public void disp()
        {
            System.out.println(data + " ");
        }
        public TreeNode getleft()
        {
            return left;
        }
        public TreeNode getright()
        {
            return right;
        }
        public void setdata(int d)
        {
            data=d;
        }
        public int getdata()
        {
            return data;
        }
    }
   
    class BinaryTree
    {
        TreeNode root;
        public BinaryTree()
        {
            root=null;
        }
        public int countnodes()
        {
            return countnodes(root);
        }
        private int countnodes(TreeNode r)
        {
            if(r==null)
                return 0;
            else
            {
                int l=1;
                l=l+countnodes(r.getleft());
                l=l+countnodes(r.getright());
                return l;
            }
        }
        public boolean search(int value)
        {
            return search(root,value);
        }
        private boolean search(TreeNode r,int val)
        {
            boolean found=false;
            while((r!=null) && !found)
            {
                int rval=r.getdata();
                if(val < rval)
                    r=r.getleft();
                else if(val > rval)
                    r=r.getright();
                else
                {
                    found=true;
                    break;
                }
                found=search(r,val);
            }
            return found;
        }
        public void inoder()
        {
            inorder(root);
        }
        private void inorder(TreeNode r)
        {
            if(r!=null)
            {
                inorder(r.getleft());
                System.out.print(r.getdata() + "  ");
                inorder(r.getright());
            }
        }
        public void preoder()
        {
            preorder(root);
        }
        private void preorder(TreeNode r)
        {
            if(r!=null)
            {
                System.out.print(r.getdata() + "  ");
                preorder(r.getleft());               
                preorder(r.getright());
            }
        }
        public void postoder()
        {
            postorder(root);
        }
        private void postorder(TreeNode r)
        {
            if(r!=null)
            {
                postorder(r.getleft());               
                postorder(r.getright());
                System.out.print(r.getdata() + "  ");
            }
        }
    }

    class bttest
    {
        protected static BinaryTree bt;       
        public static void main(String args[])
        {
            int val;
            bt=new BinaryTree();
            System.out.println("\nPost order traversal of the tree is :  ");
            bt.postorder(); 
            System.out.println("\nPre order traversal of the tree is :  ");
            bt.preorder(); 
            System.out.println("\nInorder order traversal of the tree is :  ");
            bt.inorder();
            int l=bt.countnodes();
            System.out.println("\nNo. of nodes : " +l);
            try
            {
                System.out.println("\nEnter search item : ");
                BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
                val=Integer.parseInt(br.readLine());
                if(bt.search(val))
                    System.out.println("Item exists in the tree");
                else
                    System.out.println("Item does not exist in the tree");
            }
            catch(Exception e)
            {
                System.out.println(e);
            }
            System.out.println("\n");
        }
    } 

Top