【发布时间】:2012-11-24 01:57:31
【问题描述】:
我在二叉搜索树上做一个小的 Java 工作,但是当我将一个节点递归插入到树中并显示它时,我什么也没得到。我已经研究了一段时间了,我不确定,但我认为这是一个通过引用的问题。
这是我的代码:
public class BST {
private BSTNode root;
public BST() {
root = null;
}
public BSTNode getRoot() {
return root;
}
public void insertR( BSTNode root, Comparable elem ) {
if ( root == null ) {
root = new BSTNode( elem );
}
else {
if ( elem.compareTo( root.element ) < 0 ) {
insertR( root.left, elem );
} else {
insertR( root.right, elem );
}
}
}
public void printInOrder (BSTNode root) {
if (root != null) {
printInOrder(root.left);
System.out.println(root.element);
printInOrder(root.right);
}
}
}
class BSTNode {
protected Comparable element;
protected BSTNode left;
protected BSTNode right;
protected BSTNode ( Comparable elem ) {
element = elem;
left = null;
right = null;
}
}
我执行了一系列 insertR,其中 root 是要插入的节点,elem 是一个字符串,但它没有打印任何内容,就好像根本没有填充树一样。我确定这是我的递归插入的问题,但我不确定在哪里,我需要使用递归插入方法,它不返回任何我认为不可能的东西。
任何帮助都会很棒。
【问题讨论】:
-
第二行不是私有 BSTNode 根吗??
-
你也可以为可比较元素添加构造函数
-
是的,它应该是 BSTNode 根,抱歉没有检查那部分。可比较的元素可以是任何东西,在这种情况下我使用字符串
标签: java recursion insert binary-search-tree