java - 如何遍历二叉树

标签 java binary-tree nodes tree-traversal

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

这是我的功能:

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

当我打印 hashmap 时,我得到了这个输出: z : 000

我期望这样的输出:
z : 000
一个:001
b : 010
.
.
.

最佳答案

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

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

关于java - 如何遍历二叉树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56155650/

相关文章:

binary-tree - 按升序打印两个二叉树的节点

c++ - 如何获得 std::set 的相对索引?

javascript - Chrome - 性能监视器 - DOM 节点不断堆叠

c - 从二叉树中删除所有小于/大于 C 中给定值的值?

c - 删除节点时出现无限循环

java - 如何从变量类型 Uri 获取绝对路径

java - 当我设置 "Optional<String> optional = null;"时,任何 ide 都会警告我吗

java - 不兼容的类型需要找到对象条目

java - 二叉树:节点数与子树高度之间的除法最大值

java - 如何定义 ListActivity 的列表?