Need help with BinaryTree

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • satan
    New Member
    • Oct 2006
    • 28

    #1

    Need help with BinaryTree

    I need to write the definition of the method leavesCount that takes as a parameter a reference of the root node of a binary tree and returns the numbers of leaves in the binary tree. This what i get so far


    Code:
    public class BinaryTree
    {
    
             //Definition of the node
        protected class BinaryTreeNode
        {
            DataElement info;
            BinaryTreeNode llink;
            BinaryTreeNode rlink;
        } 
        
        protected BinaryTreeNode root;
        
           //default constructor  
           //Postcondition: root = null;
        public BinaryTree()  
        {
             root = null;
        }
    
           //copy constructor
        public BinaryTree(BinaryTree otherTree) 
        {
             if(otherTree.root == null) //otherTree is empty
                root = null;
             else
                root = copy(otherTree.root);
        }
    
           //Method to determine whether the binary tree is empty.
           //Postcondition: Returns true if the binary tree is empty;
           //               otherwise, returns false.    
        public boolean isEmpty()
        {
             return (root == null);
        }
    
           //Method to do an inorder traversal of the binary tree.
           //Postcondition: The nodes of the binary tree are output
           //               in the inorder sequence.
        public void inorderTraversal()
        {
             inorder(root);
        }
    
           //Method to do a preorder traversal of the binary tree.
           //Postcondition: The nodes of the binary tree are output
           //               in the preorder sequence.
        public void preorderTraversal()
        {
             preorder(root);
        }
    
           //Method to do a postorder traversal of the binary tree.
           //Postcondition: The nodes of the binary tree are output
           //               in the postorder sequence.       
        public void postorderTraversal()
        {
             postorder(root);
        }
    
           //Method to determine the height of the binary tree.
           //Postcondition: The height of the binary tree is returned.    
        public int treeHeight()
        {
             return height(root);
        }
    
           //Method to determine the number of nodes in the 
           //binary tree.
           //Postcondition: The number of nodes in the binary tree
           //               is returned.       
        public int treeNodeCount()
        {
             return nodeCount(root);
        }
    
           //Method to determine the number of leaves in the 
           //binary tree.
           //Postcondition: The number of leaves in the binary tree
           //               is returned.       
        public int treeLeavesCount()
        {
             return leavesCount(root);
        }
    
           //Method to destroy the binary tree.
           //Postcondition: root = null     
        public void destroyTree()
        {
            root = null;
        }
    
            //Method to make a copy of the binary tree 
           //specified by otherTree points. 
           //Postcondition: A copy of otherTree is assigned to
           //               this binary tree.   
        public void copyTree(BinaryTree otherTree)
        { 
             
             if(this != otherTree) //avoid self-copy
             {
                root = null;   
        
                if(otherTree.root != null) //otherTree is nonempty
                   root = copy(otherTree.root);
             }
        
        }
        
            //Method to make a copy of the binary tree to 
            //which otherTreeRoot points. 
            //Postcondition: A copy of the binary tree to which
            //               otherTreeRoot is created and the reference of
            //               the root node of the copied binary tree
            //               is returned.
        private BinaryTreeNode copy(BinaryTreeNode otherTreeRoot)
        {
             BinaryTreeNode temp;
             
             if(otherTreeRoot == null)
                temp = null;
             else
             {
                temp = new BinaryTreeNode();
                temp.info = otherTreeRoot.info.getCopy();
                temp.llink = copy(otherTreeRoot.llink);
                temp.rlink = copy(otherTreeRoot.rlink);
             }
             
             return temp;
        }//end copy
    
           //Method to do an inorder traversal of the binary
           //tree to which p points.  
           //Postcondition: The nodes of the binary tree to which p
           //               points are output in the inorder sequence.    
        private void inorder(BinaryTreeNode p)
        {
             if(p != null)
             {
                inorder(p.llink);
                System.out.print(p.info + " ");
                inorder(p.rlink);
             }
        }
    
           //Method to do a preorder traversal of the binary
           //tree to which p points.  
           //Postcondition: The nodes of the binary tree to which p
           //               points are output in the preorder sequence.       
        private void preorder(BinaryTreeNode p)
        {
             if(p != null)
             {
                System.out.print(p.info + " ");
                preorder(p.llink);
                preorder(p.rlink);
             }
        }
    
           //Method to do a postorder traversal of the binary
           //tree to which p points.  
           //Postcondition: The nodes of the binary tree to which p
           //               points are output in the postorder sequence.      
        private void postorder(BinaryTreeNode p)
        {
             if(p != null)
             {
                postorder(p.llink);
                postorder(p.rlink);
                System.out.print(p.info + " ");
             }
        }
    
           //Method to determine the height of the binary tree
           //to which p points. 
           //Postcondition: The height of the binary tree to which p
           //               points is returned.   
        private int height(BinaryTreeNode p)
        {
             if(p == null)
                return 0;
             else
                return 1 + max(height(p.llink), height(p.rlink));
        }
    
           //Method to determine the larger of x and y.
           //Postcondition: The larger of x and y is returned.    
        private int max(int x, int y)
        {
             if(x >= y)
                return x;
             else
                return y;
        }
    
              }
           //Method to determine the number of leaves in the binary 
           //tree to which p points.
           //Postcondition: The number of leaves in the binary tree
           //               to which p points is returned.    
        private int leavesCount(BinaryTreeNode p)
        {
               
    }
  • Ganon11
    Recognized Expert Specialist
    • Oct 2006
    • 3651

    #2
    OK, what ideas do you have concerning the solution of this problem?

    Also, have you looked at some code for preorder/postorder/inorder traversals of a tree?

    Comment

    Working...