Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何遍历二叉树_Java_Binary Tree_Nodes_Tree Traversal - Fatal编程技术网

Java 如何遍历二叉树

Java 如何遍历二叉树,java,binary-tree,nodes,tree-traversal,Java,Binary Tree,Nodes,Tree Traversal,我有一个二叉树的根节点,我想遍历所有节点,并为每个节点生成一个键。但是只要找到第一个节点,函数就会停止 这是我的职责: public void createKey(节点根、字符串s、HashMap){ if(root==null) 返回; if(root.right==null&&node.left==null){ hashMap.put(node.symbol,s); } createKey(node.left,s+“0”,hashMap); createKey(node.right,s+“1

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

这是我的职责:

public void createKey(节点根、字符串s、HashMap){
if(root==null)
返回;
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
a: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);
}
public void createKey(节点根、字符串s、HashMap HashMap){
if(root==null)
返回;
hashMap.put(root.symbol,s);
createKey(root.left,s+“0”,hashMap);
createKey(root.right,s+“1”,hashMap);
}

我只想为叶节点设置值。我的问题是,函数在找到第一个叶节点时停止。我尝试了你的代码,但还是转到最左边的节点并停止。你是否使用调试器检查树的结构是否正确?是的。我在方法之前创建树,并确保它正确,但方法不正确工作然后试着调试你的代码来检查实际发生了什么我调试了它并简单地解释了问题。它只是深入并停止