我正在尝试使用字母填充二进制树,然后将其用于编码莫尔斯代码序列,但是我在插入()方法时遇到了两次或更多的字母。
如果代码有'。'它将离开左 如果代码有' - ',它就会正确
然后我试图遍历它,但我的输出显示了很多相同的字母
这是我的insert()
:
private void insert(BinaryNode localRoot, BinaryNode node){
if (localRoot == null) { //Replace empty tree with new tree with the item at the root.
localRoot = node;
return;
}
String result = node.getData().toString();//getting Item from BinaryNode.java
//looping over morse code
for(int cnt = 0;cnt<result.length();cnt++){
if(result.charAt(cnt)=='.')
{
if (localRoot.getLeftSubtree() == null){
localRoot.setLeftSubtree(node);}
}
else if(result.charAt(cnt)=='-'){
if (localRoot.getRightSubtree() == null)
localRoot.setRightSubtree(node);
}
}
}
答案 0 :(得分:3)
您的insert方法循环遍历整个节点字符串。当它找到'。'时它增加了左边。当它找到' - '时,它会向右添加。如果您的节点字符串同时具有'。'并且' - '在其中,它将被添加到左侧和右侧(如果左侧和右侧为空,则开始)。我不确定你要做什么,但你可能只应检查节点字符串中的第一个字母。
答案 1 :(得分:1)
它必须是一棵树吗?为什么不使用hashmap?
答案 2 :(得分:0)
您的insert
执行以下操作:
如果localroot为null,则不执行任何操作(您将两个局部变量设置为相同,但总体而言是无操作) 如果您的localroot不为null,则将其左子树设置为node,每个'。'你会发现每个' - '找到正确的子树。
我不知道你的初始“localroot”是什么,但假设它的一个(非空)节点代表空的莫尔斯字符串,在插入“A”之后,即“.-”,你的根将有两个子项“A”和“A”(相同的节点对象),然后将被“B”替换,然后被“C”,“D”替换为“E”,这将只设置左子树。