【发布时间】:2020-11-28 09:26:07
【问题描述】:
我正在尝试创建一个函数,该函数在二叉树中搜索重复节点并将每个唯一节点在树中出现的次数存储到哈希图中。
这是一个更具体的问题版本 -
“创建一个名为 YourBinaryTree 的公共类,它扩展 BinaryTree。覆盖受保护的 Map
我尝试递归搜索树,但我似乎无法让它工作,因为重复节点正在创建新映射而不是替换旧映射的值。
这是我目前编写的代码:
import java.util.Map;
import java.util.HashMap;
public class YourBinaryTree extends BinaryTree
{
protected Map<Object, Integer> valueCount()
{
Map<Object, Integer> treeMap = new HashMap<>();
if(root == null)
{
return treeMap;
}
if(root.left == null && root.right == null)
{
treeMap.put(root.value , 1);
return treeMap;
}
return valueCount(root);
}
private Map<Object, Integer> valueCount(Node current)
{
Map<Object, Integer> treeMap = new HashMap<>();
if(current == null)
{
return treeMap;
}
if(treeMap.containsKey(current.value))
{
treeMap.put(current.value, treeMap.get(current) + 1);
}
else
{
treeMap.put(current.value, 1);
}
/*
Map<Object, Integer> treeMapLeft = new HashMap<>();
Map<Object, Integer> treeMapRight = new HashMap<>();
treeMapLeft.putAll(valueCount(current.left));
treeMapRight.putAll(valueCount(current.right));
treeMapRight.forEach(
(key, value)
-> treeMapLeft.merge(key, value, (v1, v2) -> v1+v2));
treeMap = treeMapLeft;
*/
treeMap.putAll(valueCount(current.left));
treeMap.putAll(valueCount(current.right));
return treeMap;
}
}
这是创建二叉树的类的代码:
public class BinaryTree
{
protected class Node
{
protected Object value;
protected Node left;
protected Node right;
Node(Object setValue)
{
value = setValue;
}
}
protected Node root;
}
我尝试过使用合并功能,但我真的很确定如何实现它。任何帮助将不胜感激,谢谢! :)
【问题讨论】:
标签: java hashmap binary-tree