java - 如何遍历二叉树
问题描述
我有一个二叉树的根节点,我想遍历所有节点并为每个节点创建一个键。但是只要找到第一个节点,该函数就会停止。
这是我的功能:
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
。
.
.
解决方案
您仅为树中的叶节点将值放入映射中。您需要将代码更改为以下内容:
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);
}
推荐阅读
- powershell - Powershell:如何在离线计算机中安装 PSReadline 模块
- c# - 当对象与 JSON 不匹配时,如何在 C# 中进行自定义 JSON 序列化和反序列化
- javascript - 均衡连接多个模型给出别名错误
- android - 如何从 kotlin 中的数据库 SQLite 读取登录名和密码?
- sql - 如何在 DB2 数据库中存储表情符号字符?
- android - 未调用 PopupMenu onMenuItemClick
- rxjs - 将初始 Observable 与 Observable 组合以进行更改(合并为单个 Observable)
- c - 如何在 Gtk 3.24.5 中使用箭头键滚动 ScrolledWindow?
- email - 防止电子邮件扫描仪激活“取消订阅”链接的策略
- php - VSCODE PHP IntelliSense / Intelephense 问题