gpt4 book ai didi

java - TreeViolationException问题

转载 作者:行者123 更新时间:2023-12-01 16:12:06 26 4
gpt4 key购买 nike

嗨,我在插入二叉树中节点的右侧时遇到了一些麻烦...我只是不明白为什么会发生异常。这是插入的方法:

public void attachRight(BinaryTree<T> tree) {
if (right != null) {
throw new TreeViolationException();

}
if (tree != null) {
tree.parent = this;
right = tree;
}
}

这是我的主类中的代码

公开课测试{

public static void main(String[] args) {

/* the tree to be built 30
* / \
* 12 16
* / \ / \
* null 1 2 5
*/

//Create binary tree and set root to 30
BinaryTree<Integer> root = new BinaryTree<Integer>();
root.makeRoot(30);
//System.out.println(root.getData()); //for verifying only

//Insert 12 -> left(30)
root.attachLeft(new BinaryTree<Integer>());
root.left.setData(12);

//Insert 16 -> right(30)
root.attachRight(new BinaryTree<Integer>());
root.right.setData(16);

//insert 1 -> right(12)
root.right.attachRight(new BinaryTree<Integer>());
root.right.right.setData(1);

//insert 2 -> left(16)
root.right.attachLeft(new BinaryTree<Integer>());
root.right.left.setData(2);

//insert 5 -> right(16)
root.right.attachRight(new BinaryTree<Integer>());
root.right.right.setData(5);

System.out.println(root.getData());
System.out.println(root.left.getData());
System.out.println(root.right.getData());

}

}

我只能插入 30、12 和 16。不知道发生了什么......这是我得到的错误,它发生在 AttachRight 方法中

线程“main”中出现异常 proj5.TreeViolationException 在 proj5.BinaryTree.attachRight(BinaryTree.java:98)

TreeViolationException 只是我扩展 RuntimeException 的一个类

最佳答案

根据给出的信息,异常应该来自这一行:

//insert 5 -> right(16)
root.right.attachRight(new BinaryTree<Integer>());

因为 root.right.attachRight() 已经在这一行被调用:

//insert 1 -> right(12)
root.right.attachRight(new BinaryTree<Integer>());

并且 root.right 已经有了正确的节点。为什么它来得更早,现在无法诊断。您应该提供更多信息(例如 BinaryTree 类完整实现)。

关于java - TreeViolationException问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/742140/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com