设置
我有一个堆,其中包含存储在 s 的二维数组heapArray中的intLevels
级别和e
元素(两者),它又高又宽。出于假设的目的,假设我输入了 1、2、3、4、5、6、7、8 和 9。堆看起来像这样:int
Object
intLevels
Math.pow(2, intLevels)
9
8 6
7 3 2 5
1 4
如果你用一系列java.util.Arrays.toString(Object[] a)
s 打印它,它看起来像这样:
[9, null, null, null, null, null, null, null]
[8, 6, null, null, null, null, null, null]
[7, 3, 2, 5, null, null, null, null]
[1, 4, null, null, null, null, null, null]
有谁知道如何获取这些信息并从中创建一个 JTree?对于不知道的人来说,JTree 的工作原理很像链表。您有一个根节点,可以向其中添加更多节点,并且可以在这些节点上添加其他节点。我知道一个事实,如果我正在处理的唯一堆是这个堆,我将能够以这种方式制作树:
jTree = new javax.swing.JTree();
treeNode1 = new javax.swing.tree.DefaultMutableTreeNode(9);
treeNode2 = new javax.swing.tree.DefaultMutableTreeNode(8);
treeNode3 = new javax.swing.tree.DefaultMutableTreeNode(7);
treeNode4 = new javax.swing.tree.DefaultMutableTreeNode(1);
treeNode3.add(treeNode4);
treeNode4 = new javax.swing.tree.DefaultMutableTreeNode(4);
treeNode3.add(treeNode4);
treeNode2.add(treeNode3);
treeNode3 = new javax.swing.tree.DefaultMutableTreeNode(3);
treeNode2.add(treeNode3);
treeNode1.add(treeNode2);
treeNode2 = new javax.swing.tree.DefaultMutableTreeNode(6);
treeNode3 = new javax.swing.tree.DefaultMutableTreeNode(2);
treeNode2.add(treeNode3);
treeNode3 = new javax.swing.tree.DefaultMutableTreeNode(5);
treeNode2.add(treeNode3);
treeNode1.add(treeNode2);
jTree.setModel(new javax.swing.tree.DefaultTreeModel(treeNode1));
这导致一棵树看起来像:
9
├8
│├7
││├1
││└4
│└3
└6
├2
└5
编辑
我发现实现了答案的buildTree(List<Object[]>)
方法:
java.util.List<Object[]> objectArrays = new java.util.ArrayList<Object[]>();
objectArrays.addAll(Arrays.asList(heapArray));
jTree1 = buildTree(objectArrays);
它似乎仍然不起作用;树仍然是空的。
问题
有谁知道用给定信息将这个二维数组制作成 JTree 的相对简单但灵活的方法?如果正确实施,将 1、2、3、4、5、6、7、8 和 9 输入到这个树/堆/数组应该最终得到与我上面显示的具体方式相同的结果。