二叉树插入()

时间:2011-04-21 16:06:21

标签: java tree binary-tree

我正在尝试使用字母填充二进制树,然后将其用于编码莫尔斯代码序列,但是我在插入()方法时遇到了两次或更多的字母。

如果代码有'。'它将离开左 如果代码有' - ',它就会正确

然后我试图遍历它,但我的输出显示了很多相同的字母

这是我的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);
        }

    }
}

3 个答案:

答案 0 :(得分:3)

您的insert方法循环遍历整个节点字符串。当它找到'。'时它增加了左边。当它找到' - '时,它会向右添加。如果您的节点字符串同时具有'。'并且' - '在其中,它将被添加到左侧和右侧(如果左侧和右侧为空,则开始)。我不确定你要做什么,但你可能只应检查节点字符串中的第一个字母。

答案 1 :(得分:1)

它必须是一棵树吗?为什么不使用hashmap?

答案 2 :(得分:0)

您的insert执行以下操作:

如果localroot为null,则不执行任何操作(您将两个局部变量设置为相同,但总体而言是无操作) 如果您的localroot不为null,则将其左子树设置为node,每个'。'你会发现每个' - '找到正确的子树。

我不知道你的初始“localroot”是什么,但假设它的一个(非空)节点代表空的莫尔斯字符串,在插入“A”之后,即“.-”,你的根将有两个子项“A”和“A”(相同的节点对象),然后将被“B”替换,然后被“C”,“D”替换为“E”,这将只设置左子树。