Hi
i have this class but it's missing print the tree
need to print them level by level
hope anyone could help asap
thx in advance
New Compressed .zip
Welcome to the Java Programming Forums
The professional, friendly Java community. 21,500 members and growing!
The Java Programming Forums are a community of Java programmers from all around the World. Our members have a wide range of skills and they all have one thing in common: A passion to learn and code Java. We invite beginner Java programmers right through to Java professionals to post here and share your knowledge. Become a part of the community, help others, expand your knowledge of Java and enjoy talking with like minded people. Registration is quick and best of all free. We look forward to meeting you.
>> REGISTER NOW TO START POSTING
Members have full access to the forums. Advertisements are removed for registered users.
Hi
i have this class but it's missing print the tree
need to print them level by level
hope anyone could help asap
thx in advance
New Compressed .zip
Please post your code with your questions about how to code the algorithm you are trying to implement.
ok
don't know how to put it like u guys so i will just copy it here
-----------------------
// tree.java // demonstrates binary tree // to run this program: C>java TreeApp import java.io.*; import java.util.*; // for Stack class //////////////////////////////////////////////////////////////// class Node { public int iData; // data item (key) public double dData; // data item public Node leftChild; // this node’s left child public Node rightChild; // this node’s right child public void displayNode() // display ourself { System.out.print('{'); System.out.print(iData); System.out.print(','); System.out.print(dData); System.out.print('}'); } } // end class Node //////////////////////////////////////////////////////////////// class Tree { private Node root; // first node of tree // ------------------------------------------------------------- public Tree() // constructor { root = null; } // no nodes in tree yet // ------------------------------------------------------------- public Node find(int key) // find node with given key { // (assumes non-empty tree) Node current = root; // start at root while(current.iData != key) // while no match, { if(key < current.iData) // go left? current = current.leftChild; else // or go right? current = current.rightChild; if(current == null) // if no child, return null; // didn’t find it } return current; // found it } // end find() // ------------------------------------------------------------- public void insert(int id, double dd) { Node newNode = new Node(); // make new node newNode.iData = id; // insert data newNode.dData = dd; if(root==null) // no node in root root = newNode; else // root occupied { Node current = root; // start at root Node parent; while(true) // (exits internally) { parent = current; if(id < current.iData) // go left? { current = current.leftChild; if(current == null) // if end of the line, { // insert on left parent.leftChild = newNode; return; } } // end if go left else // or go right? { current = current.rightChild; if(current == null) // if end of the line { // insert on right parent.rightChild = newNode; return; } } // end else go right } // end while } // end else not root } // end insert() // ------------------------------------------------------------- public boolean delete(int key) // delete node with given key { // (assumes non-empty list) Node current = root; Node parent = root; boolean isLeftChild = true; while(current.iData != key) // search for node { parent = current; if(key < current.iData) // go left? { isLeftChild = true; current = current.leftChild; } else // or go right? { isLeftChild = false; current = current.rightChild; } if(current == null) // end of the line, return false; // didn’t find it } // end while // found node to delete // if no children, simply delete it if(current.leftChild==null && current.rightChild==null) { if(current == root) // if root, root = null; // tree is empty else if(isLeftChild) parent.leftChild = null; // disconnect else // from parent parent.rightChild = null; } // if no right child, replace with left subtree else if(current.rightChild==null) if(current == root) root = current.leftChild; else if(isLeftChild) parent.leftChild = current.leftChild; else parent.rightChild = current.leftChild; // if no left child, replace with right subtree else if(current.leftChild==null) if(current == root) root = current.rightChild; else if(isLeftChild) parent.leftChild = current.rightChild; else parent.rightChild = current.rightChild; else // two children, so replace with inorder successor { // get successor of node to delete (current) Node successor = getSuccessor(current); // connect parent of current to successor instead if(current == root) root = successor; else if(isLeftChild) parent.leftChild = successor; else parent.rightChild = successor; // connect successor to current’s left child successor.leftChild = current.leftChild; } // end else two children // (successor cannot have a left child) return true; // success } // end delete() // ------------------------------------------------------------- // returns node with next-highest value after delNode // goes to right child, then right child’s left descendents private Node getSuccessor(Node delNode) { Node successorParent = delNode; Node successor = delNode; Node current = delNode.rightChild; // go to right child while(current != null) // until no more { // left children, successorParent = successor; successor = current; current = current.leftChild; // go to left child } // if successor not if(successor != delNode.rightChild) // right child, { // make connections successorParent.leftChild = successor.rightChild; successor.rightChild = delNode.rightChild; } return successor; } // ------------------------------------------------------------- public void traverse(int traverseType) { switch(traverseType) { case 1: System.out.print("\nPreorder traversal: "); preOrder(root); break; case 2: System.out.print("\nInorder traversal: "); inOrder(root); break; case 3: System.out.print("\nPostorder traversal: "); postOrder(root); break; } System.out.println(); } // ------------------------------------------------------------- private void preOrder(Node localRoot) { if(localRoot != null) { System.out.print(localRoot.iData + " "); preOrder(localRoot.leftChild); preOrder(localRoot.rightChild); } } // ------------------------------------------------------------- private void inOrder(Node localRoot) { if(localRoot != null) { inOrder(localRoot.leftChild); System.out.print(localRoot.iData + " "); inOrder(localRoot.rightChild); } } // ------------------------------------------------------------- private void postOrder(Node localRoot) { if(localRoot != null) { postOrder(localRoot.leftChild); postOrder(localRoot.rightChild); System.out.print(localRoot.iData + " "); } } // ------------------------------------------------------------- public void displayTree() { // need to complet this function //to be done as HW } // end displayTree() // ------------------------------------------------------------- } // end class Tree ////////////////////////////////////////////////////////////////
Last edited by cool_97; July 22nd, 2011 at 09:48 AM.
This is the main class
-------------------------------
import java.io.*; import java.util.*; class TreeApp { public static void main(String[] args) throws IOException { int value; Tree theTree = new Tree(); theTree.insert(50, 1.5); theTree.insert(25, 1.2); theTree.insert(75, 1.7); theTree.insert(12, 1.5); theTree.insert(37, 1.2); theTree.insert(43, 1.7); theTree.insert(30, 1.5); theTree.insert(33, 1.2); theTree.insert(87, 1.7); theTree.insert(93, 1.5); theTree.insert(97, 1.5); while(true) { System.out.print("Enter first letter of show, "); System.out.print("insert, find, delete, or traverse: "); int choice = getChar(); switch(choice) { case 's': theTree.displayTree(); break; case 'i': System.out.print("Enter value to insert: "); value = getInt(); theTree.insert(value, value + 0.9); break; case 'f': System.out.print("Enter value to find: "); value = getInt(); Node found = theTree.find(value); if(found != null) { System.out.print("Found: "); found.displayNode(); System.out.print("\n"); } else System.out.print("Could not find "); System.out.print(value + '\n'); break; case 'd': System.out.print("Enter value to delete: "); value = getInt(); boolean didDelete = theTree.delete(value); if(didDelete) System.out.print("Deleted " + value + '\n'); else System.out.print("Could not delete "); System.out.print(value + '\n'); break; case 't': System.out.print("Enter type 1, 2 or 3: "); value = getInt(); theTree.traverse(value); break; default: System.out.print("Invalid entry\n"); } // end switch } // end while } // end main() // ------------------------------------------------------------- public static String getString() throws IOException { InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); String s = br.readLine(); return s; } // ------------------------------------------------------------- public static char getChar() throws IOException { String s = getString(); return s.charAt(0); } //------------------------------------------------------------- public static int getInt() throws IOException { String s = getString(); return Integer.parseInt(s); } // ------------------------------------------------------------- } // end class TreeApp ////////////////////////////////////////////////////////////////
Last edited by cool_97; July 22nd, 2011 at 09:48 AM.
Where are your questions?
Please wrap your code in code tags. See Go Advanced and the # icon
in class tree
u could notice a function called
public void displayTree()
need to complete this function
and i need it to print the tree level by level
Still waiting for questions about the problems you are having writing the code.need to complete this function
and i need it to print the tree level by level
this is the code
output isPHP Code:
{
int dep=getHeight();
System.out.printf("Height is %d\n",dep);
//Queue q2 = new Queue();
Node current = root;
int counter = 1;
helpdispley(current);
Node q;
while (q1.dequeue()!= null){
int a=q1.dequeue().iData;
double g=q1.dequeue().dData;
System.out.printf("%d ,%.2f \n ",a,g);
}
//while(counter != dep){
// if(current.rightChild !=null && current.leftChild!=null){
// q1.enqueue(current.rightChild.iData);
// q1.enqueue(current.leftChild.iData);
// }
// if (current.rightChild ==null && current.leftChild==null){
// q1.enqueue(current.iData);
// }
//}
PHP Code:
Enter first letter of show, insert, find, delete, or traverse: s
Height is 5
0 ,0.00
0 ,0.00
0 ,1.20
0 ,0.00
30 ,1.70
12 ,1.20
0 ,0.00
0 ,1.50
0 ,1.50
0 ,1.70
25 ,1.70
Is empty
You don't say if that is the output you are looking for?
If not, please explain what is wrong with it and show how you want it to look.
What is the posted code supposed to do? Half of it is commented out.
ok lets assume we have random values
it should print it like this
PHP Code:
55
43 23
15 3 7 18
The print outs need to have the required number of leading spaces and intervening spaces.
This looks like you need to take a piece of paper and mark where the output should go on each line.
Then come up with an equation to compute the number of leading spaces and the number of intervening spaces on each next line.
i'm not insulting him but he said that no one will write "the code for you"
and i'll be thankfull if he could help
anyway his effort is realy appreciated
what about this function that i wrote
it calls the functionPHP Code:
public void displayTree()
{
assistinOrder(root);
int level=0;
while(!q1.isEmpty()){
Node temp = q1.dequeue();
System.out.print(temp.iData+" ");
if(temp.leftChild!=null)
q1.enqueue(temp.leftChild.iData,temp.leftChild.dData);
if(temp.rightChild!=null)
q1.enqueue(temp.rightChild.iData,temp.rightChild.dData);
}
}
the output isPHP Code:
private void assistinOrder(Node localRoot)
{
if(localRoot != null)
{
inOrder(localRoot.leftChild);
q1.enqueue(localRoot.iData, localRoot.dData);
inOrder(localRoot.rightChild);
}
}
need help in printing the node infirst linePHP Code:
Enter first letter of show, insert, find, delete, or traverse: s
12 25 30 33 37 43 75 87 93 97 50 Enter first letter of show, insert, find, delete, or traverse:
chilren second
children of the children ... etc
any ideas ?
This looks like you need to take a piece of paper and mark where the output should go on each line.
Then come up with an equation to compute the number of leading spaces and the number of intervening spaces on each next line.
First line: Print some spaces and then the root node and then the new line character.how to put on first line just the root
Second line: spaces Node spaces node spaces node spaces node new line
etc
If you understand where the node's are to be printed, then what are you asking?
Is your question: how to get the nodes that are to be printed on each line?