我想實現一個二叉樹,但它只是沒有根。有任何想法嗎?它看起來像根應該插入很好,但我打印時它只是空。我是否只將臨時節點添加到不「粘」的樹上?實現二叉樹
public class tree {
public static void main(String args[]){
Treeb tree = new Treeb();
tree.add(10);
tree.add(20);
tree.add(2);
tree.add(6);
tree.printTree();
}
}
class Node{
int data;
Node left;
Node right;
public Node(int data){
this.data = data;
left = null;
right = null;
}
Node getLeft(){
return left;
}
Node getRight(){
return right;
}
}
class Treeb{
Node root;
Treeb(){
root = null;
}
void add(int n){
addNode(n, root);
}
void addNode(int n, Node vert){
if(vert == null){
vert = new Node(n);
}
else if(vert.left.data < n){
if(vert.left == null){
vert.left = new Node(n);
}
else{
addNode(n, vert.left);
}
}
else if(vert.right.data >= n){
if(vert.right == null){
vert.right = new Node(n);
}
else{
addNode(n,vert.right);
}
}
}
void printTree(){
if(root != null){
printChild(root);
}
System.out.println(root);
}
void printChild(Node leaf){
System.out.print(leaf.data);
if(leaf.left != null){
printChild(leaf.getLeft());
}
if(leaf.right != null){
printChild(leaf.getRight());
}
}
}
嗨,答案旁邊的兩個(小)評論:類名以大寫字母開頭,如果你有時使用修飾符如private,它應該很好。此外,當您創建getters(getLeft()和getRight())時,使用它們代替實例變量總是一個好主意。 (當然,這是因爲你沒有使用'私人'修飾符而成爲可能。) – 2013-05-07 07:42:56