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