binary tree toString() method

im writing an expression tree for my comp sci class and everything works except the part i coppied directly out of the book.

public String toString()

{

return toString(root, 0);

}

private String toString(Node<String> tree, int level)

{

String str="";

if(tree!=null)

{

str+= toString(tree.right, level+1);

for(int i=1; i<=level; i++)

str=str+"|";

str+=tree.value.toString()+"\n";

str+=toString(tree.left, level+1);

}

return str;

}

this is the to string method that should print the tree like this:

| | x

| x |

| | x

x | |

| | x

| x |

| | x

but the computer doesnt like it when i compile it.

LinkedBSTPT.java:90: toString() in LinkedBSTPT cannot override toString() in

java.lang.Object; attempting to use incompatible return type

found: String

required: java.lang.String

public String toString()

^

LinkedBSTPT.java:96: incompatible types

found: java.lang.String

required: String

String str="";

^

LinkedBSTPT.java:99: operator + cannot be applied to String,String

str+= toString(tree.right, level+1);

^

LinkedBSTPT.java:101: incompatible types

found: java.lang.String

required: String

str=str+"|";

^

LinkedBSTPT.java:102: incompatible types

found: String

required: java.lang.String

str+=tree.value.toString()+"\n";

^

LinkedBSTPT.java:103: operator + cannot be applied to String,String

str+=toString(tree.left, level+1);

^

these are the errors it give me. some one please explain to me why the computer doesnt like this chunk of code!

[1780 byte] By [imonriddilina] at [2007-11-27 6:21:26]
# 1

> LinkedBSTPT.java:90: toString() in LinkedBSTPT cannot override toString() in

> java.lang.Object; attempting to use incompatible return type

> found : String

> required: java.lang.String

> public String toString()

Found String but requires java.lang.String? That can mean only one thing:

you have defined a class and named it String. I suggest you either get

rid of this class or rename it to something like MyString. Giving your classes the

same name as common API classes is asking for headaches.

Hippolytea at 2007-7-12 17:37:55 > top of Java-index,Java Essentials,Java Programming...
# 2

public class String {

public static void main(String[] args) {

System.out.println("Bet this doesn't work");

}

}

georgemca at 2007-7-12 17:37:55 > top of Java-index,Java Essentials,Java Programming...
# 3

import java.util.*;

import java.io.*;

import java.lang.String;

public class LinkedBSTPT<String extends Comparable><String>> implements BSTPT<String>

{

private Node<String> root;

private Node<String> temp;

private int size;

public LinkedBSTPT()

{

root=null;

size=0;

}

public List<String> inorderTraverse()

{

List<String> list = new ArrayList<String>();

inorderTraverse(root, list);

return list;

}

private void inorderTraverse(Node<String> tree, List<String> list)

{

if(tree!= null)

{

inorderTraverse(tree.left, list);

list.add(tree.value);

inorderTraverse(tree.right, list);

}

}

public Iterator<String> iterator()

{

return inorderTraverse().iterator();

}

public int size()

{

return 1;

}

public boolean isEmpty()

{

return false;

}

public String contains(String element)

{

return contains(root, element);

}

private String contains(Node<String> tree, String element)

{

if(tree==null)

return null;

else

{

int relation = element.compareTo(tree.value);

if(relation==0)

return tree.value;

else if(relation<0)

return contains(tree.left, element);

else

return contains(tree.right, element);

}

}

public String add(String element)

{

Node<String> newNode = new Node<String>(element);

if(root==null)

{

root=newNode;

size++;

temp=root;

return null;

}

else

{

if(temp.right==null)

temp.right=newNode;

else

{

if(temp.left==null)

{

temp.left=newNode;

temp=temp.left;

}

}

return temp.value;

}

}

/*public String toString()

{

return toString(root, 0);

}

private String toString(Node<String> tree, int level)

{

String str = "";

if(tree != null)

{

str += toString(tree.right(), level+1);

for(int i = 1; i <= level; i++)

str = str + "|";

str += tree.value().toString() + "\n";

str += toString(tree.left(), level + 1);

}

return str;

}

*/

private class Node<String>

{

private String value;

private Node<String> left, right;

private Node(String v)

{

this(null,v,null);

}

private Node(Node<String> l, String v, Node<String> r)

{

left = l;

value = v;

right = r;

}

public Node left()

{

return this.left;

}

public Node right()

{

return this.right;

}

public String value()

{

return this.value;

}

}

}

here is my code for the linkedBinary tree class for reference

imonriddilina at 2007-7-12 17:37:55 > top of Java-index,Java Essentials,Java Programming...
# 4

Try

public class LinkedBSTPT implements BSTPT < String > {

You want this class specialized to java.lang.String, right?

Message was edited by:

Hippolyte

Hippolytea at 2007-7-12 17:37:55 > top of Java-index,Java Essentials,Java Programming...
# 5
thats in there the code is justpublic class LinkedBSTPT<String extends Comparable><String>> implements BSTPT<String>
imonriddilina at 2007-7-12 17:37:55 > top of Java-index,Java Essentials,Java Programming...
# 6

> thats in there

> the code is just

> public class LinkedBSTPT<String extends

> Comparable<String>> implements BSTPT<String>

I don't know what "thats in there" means. Do you want to do this?

public class LinkedBSTPT <T extends Comparable >< T > > implements BSTPT < T > {

Then change certain Strings in the code to T.

Do you see what you are doing wrong? You chose String for a generic type. Confusion!

Hippolytea at 2007-7-12 17:37:55 > top of Java-index,Java Essentials,Java Programming...