Java:Manual Binary Tree

我们在我的数据结构类中有一个赋值,我们必须手动构建一个总共7个节点的二叉树,并在预先遍历中显示每个节点中的数据。根节点有两个孩子,这两个孩子中的每一个都有两个孩子。我已经着手将整个左侧创建到第一棵树的末尾,但是一旦创建第一个右侧子树,我就会陷入这个空指针异常。我已经搜索了类似于这个的其他项目,我仍然无法找出这个代码的问题。我发现创建树的代码比我们分配的要好得多,但我们在课堂上受到限制,无法手动创建左侧和右侧的子代。任何外部的角度来帮助可能是一个简单的程序来创建将不胜感激!Java:Manual Binary Tree

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;

}

}

回答:

它,因为当你与节点创建二叉树为根,C没有父。

当你调用

t.addParent(); 

t.addRight(d);

第一行设置电流为null,则第二行试图使用空值。

以上是 Java:Manual Binary Tree 的全部内容, 来源链接: utcz.com/qa/258008.html

回到顶部