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