首页 > 解决方案 > 如何遍历二叉树

问题描述

我有一个二叉树的根节点,我想遍历所有节点并为每个节点创建一个键。但是只要找到第一个节点,该函数就会停止。

这是我的功能:

    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
a : 001
b : 010

.
.

标签: javabinary-treenodestree-traversal

解决方案


您仅为树中的叶节点将值放入映射中。您需要将代码更改为以下内容:

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);
}

推荐阅读