我有一个二进制树,如 -
1
/ \
3 5
/ \
7 9
现在我正在尝试使用HashTable
来表示树。所以我创建了HashTable
binaryTree
-
HashTable binaryTree = new HashTable<Integer, Intgeger>();
然后我尝试将项目添加到binaryTree
。我希望1
作为binaryTree的一个关键字,并且它的所有子节点(例如 - 3和5)都是它的值。所以我想把 -
binaryTree.put(1, 3);
binaryTree.put(1, 5);
由于键2有2个值,所以第二个没有插入HashTable - binaryTree?
如何将3和5添加到binaryTree
?
或者有更好的数据结构吗?
提前谢谢?
答案 0 :(得分:2)
看起来你正试图&#34;折叠&#34;邻接列表到单个哈希表中。这是可能的,但你需要将元素的类型改为能够保存两个整数的东西。
最常见的方法是使用TreeNode
类:
class TreeNode {
private final int left;
private final int right;
public int getLeft() { return left; }
public int getRight() { return left; }
TreeNode(int l, int r) { left = l; right = r; }
}
HashTable<Integer,TreeNode> binaryTree = new HashTable<Integer,TreeNode>();
现在插入的内容如下:
binaryTree.put(1, new TreeNode(3, 5));
您也可以使用两个int
的数组而不是自定义类,但使用此类表示的代码将不具有可读性:
HashTable<Integer,int[]> binaryTree = new HashTable<Integer,int[]>();
binaryTree.put(1, new int[] { 3, 5 });