作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
嗨,我在插入二叉树中节点的右侧时遇到了一些麻烦...我只是不明白为什么会发生异常。这是插入的方法:
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/
我是一名优秀的程序员,十分优秀!