我正在尝试写一个"包含" splay树的方法,用于确定节点是否已在树中。我给这个方法一个节点开始搜索和一个字符串键使用找到相应的节点。我认为我对递归有很好的处理能力,但我很难过。我加粗了导致无限递归的两条线,但我被卡住了,因为除非你以某种方式拥有一个具有无限数量元素的树,否则就不会有左和/或右元素在某些时候必须为空?他们不能!=永远无效!我可能会失去理智,但我非常感谢有关如何创建更强大的基础案例的任何澄清。
tldr:当我们必须在某个时刻遇到null时,这个函数怎么可能无限递归?!
public BST_Node containsNode(BST_Node node, String s) {
BST_Node result = null;
if (node == null) {
return null;
}
if (node.data.compareTo(s) == 0) {
splay(node);
return node;
}
if (node.left != null) {
result = containsNode(node.left, s); //recursion here
}
if (result == null && node.right != null) {
result = right.containsNode(node.right, s); //recursion here
}
return result;
}
}