Java - AVL 树搜索
Java - AVL tree search
我已验证有问题的树 t
实际上是一棵 AVL 树。我的问题是,无论搜索的字符串是否在树中,s
和 s2
总是 null
。我怀疑这更像是一个递归问题,而不是 AVL 树问题。
t.val
产生节点字符串的值。 t.left
和 t.right
分别生成节点的左右子节点。
private static AVLTreeNode<String> search( AVLTreeNode<String> t, String x )
{
if( t==null ) return null;
if( t.val==x ) return t;
AVLTreeNode s=search(t.right,x);
AVLTreeNode s2=search(t.left,x);
if( s!=null ) return s;
return s2;
}
使用 t.val.equals(x)
而不是 ==
,一切都会正常进行。 ==
检查它们是否具有相同的引用(完全相同的字符串,保存在内存中的相同位置)并且 equals(Object)
检查两个对象的内容是否相等(取决于实现)。
我已验证有问题的树 t
实际上是一棵 AVL 树。我的问题是,无论搜索的字符串是否在树中,s
和 s2
总是 null
。我怀疑这更像是一个递归问题,而不是 AVL 树问题。
t.val
产生节点字符串的值。 t.left
和 t.right
分别生成节点的左右子节点。
private static AVLTreeNode<String> search( AVLTreeNode<String> t, String x )
{
if( t==null ) return null;
if( t.val==x ) return t;
AVLTreeNode s=search(t.right,x);
AVLTreeNode s2=search(t.left,x);
if( s!=null ) return s;
return s2;
}
使用 t.val.equals(x)
而不是 ==
,一切都会正常进行。 ==
检查它们是否具有相同的引用(完全相同的字符串,保存在内存中的相同位置)并且 equals(Object)
检查两个对象的内容是否相等(取决于实现)。