0

私のデータ構造クラスには、合計 7 つのノードを持つバイナリ ツリーを手動で構築し、各ノードのデータを事前順序トラバーサルで表示する割り当てがあります。ルート ノードには 2 つの子があり、これらの 2 つの子にはそれぞれ 2 つの子があります。最初のツリーの最後まで左側全体を作成するところまで来ましたが、最初の右の子を作成すると、この時点で Null Pointer Exception でスタックします。これに似た他のプロジェクトを検索しましたが、このコードの問題が何であるかまだわかりません。ツリーを作成するコードは、割り当てられたものよりもはるかに優れていることがわかりましたが、クラスでは、左右の子を手動で作成することに制限されています。おそらく作成するのが簡単なプログラムであると思われるものを支援する外部の視点は大歓迎です!

public class Main {

public static void main(String[] args) {

    Node a = new Node(1);
    Node b = new Node(2);
    Node c = new Node(3);
    Node d = new Node(4);
    Node e = new Node(5);
    Node f = new Node(6);
    Node g = new Node(7);
    BinaryTree t = new BinaryTree(a);

    t.addleft(a);
    t.addleft(b);
    t.addleft(c);
    t.addParent();
    t.addRight(d);
    t.addParent();
    //t.addParent();
    //t.addRight(e);
    //t.addleft(f);
    //t.addParent();
    //t.addRight(g);


    //System.out.println(n.getData());          

    t.preOrder(t.root);
}

}

public class BinaryTree {
Node root;
Node current;

public BinaryTree(Node n){
    root = n;
    n.setParent(current);
    current = n;
}

public void addleft(Node n){    
    current.setLeft(n);
    current = n;        
}

public void addRight(Node n){   
    current.setRight(n);
    current = n;        
}

public void addParent(){
    current = current.getParent();
}

public void preOrder(Node n){
    if(n != null){
        System.out.println(n.getData());
        preOrder(n.leftChild);
        preOrder(n.rightChild);
        return;
    }
    return;

}

}

public class Node {
Node parent;
Node rightChild;
Node leftChild;
int data;

public Node(int i) {
    data = i;
    parent = null;
    rightChild = null;
    leftChild = null;
}

public int getData() {
    return data;
}

public Node getParent() {
    return parent;
}

public void setParent(Node aParent) {
    parent = aParent;
}

public Node getLeft() {
    return leftChild;
}

public void setLeft(Node left) {
    leftChild = left;
}

public void setRight(Node right) {
    rightChild = right;
}

public Node getRight() {
    return rightChild;
}
}
4

1 に答える 1