【发布时间】:2014-10-13 05:24:32
【问题描述】:
所以,我有以下代码在三叉搜索树中插入一个元素(左树较小,中树相同,右树较大)
public void insert (TrinaryTree<T> root, T data) {
//if the given tree doesn't exist yet
if (root == null){
root = new TrinaryTree<T>(data);
}
//if the given value is greater, insert to the right
else if (root.getData().compareTo(data) > 0){
insert (root.right, data);
}
//if the given value is equal, insert to the mid
else if (root.getData().compareTo(data) == 0) {
insert (root.mid, data);
}
//if the given value is less, insert to the left
else {
insert (root.left, data);
}
}
然后我尝试打印出我的树(以便遍历检查我所做的事情是否正确 -
public void inorderTraversal (TrinaryTree<T> root){
if (root != null){
inorderTraversal(root.getLeft());
System.out.println(root.getData());
inorderTraversal(root.getRight());
}
}
现在当我尝试运行主类时,就是这样 -
public static void main (String [] args) {
TrinaryTree<Integer> tree = new TrinaryTree<Integer>(5);
tree.insert(tree, 4);
tree.insert(tree, 9);
tree.insert(tree, 5);
tree.insert(tree, 7);
tree.insert(tree, 2);
tree.insert(tree, 2);
tree.inorderTraversal(tree);
}
我刚得到输出 5。我发现是因为主树的左右子树为空。我不确定为什么会这样。我的插入函数有效,因为我在插入函数中放入了一条打印语句,并且该语句确实被打印了。为什么子树仍然为空?
【问题讨论】:
标签: java algorithm tree binary-search-tree