как пройти бинарное дерево - PullRequest
2 голосов
/ 15 мая 2019

У меня есть корневой узел двоичного дерева, и я хочу обойти все узлы и создать ключ для каждого узла. Но функция останавливается всякий раз, когда находит первый узел.

Это моя функция:

    public void createKey(Node root,String s,HashMap<String,String> map){
        if(root==null)
            return;
        if(root.right==null&&node.left==null) {
            hashMap.put(node.symbol, s);
        }
        createKey(node.left, s + "0",hashMap);
        createKey(node.right, s + "1",hashMap);
    }

когда я печатаю хэш-карту, я получаю этот вывод: z: 000

Я ожидаю такой вывод:
z: 000
а: 001
б: 010
.
.
.

1 Ответ

0 голосов
/ 15 мая 2019

Вы помещаете значения на карту только для листовых узлов в вашем дереве. Вам нужно изменить свой код на следующее:

public void createKey(Node root,String s,HashMap<String,String> hashMap){
    if(root==null)
        return;
    hashMap.put(root.symbol, s);
    createKey(root.left, s + "0",hashMap);
    createKey(root.right, s + "1",hashMap);
}
...