我有一棵树,叶子用 L 标记,非叶子节点用 I 标记。我得到了树的前序遍历。一个例子是 IIILLILILLLIIILLLIILILLL。我必须为这个包含的字符串构建霍夫曼树。我最初为我的参数传入了一个新的 Root()、0 和我的 treeString。TreeString 将是上面粘贴了 I 和 L 的字符串。出于某种原因,我的代码会导致引发 StackOverflow 异常。我的 makeTree 方法的代码如下:
public static void makeTree (BinaryNodeInterface<Character> root, int start, String treeString)
{
if (treeString.charAt(start)=='L'){
root.setLeftChild(null);
root.setRightChild(null);
return;
}
BinaryNodeInterface<Character> leftSide = new BinaryNode<Character>();
root.setLeftChild(leftSide);
makeTree(root.getLeftChild(), start++, treeString);
BinaryNodeInterface<Character> rightSide = new BinaryNode<Character>();
root.setRightChild(rightSide);
makeTree(root.getRightChild(), start++, treeString);
}
我不知道是什么导致了 stackoverflow 异常被抛出。我认为我一开始的基本情况会返回并处理它。