設定
intLevels
レベルとe
要素 (両方ともint
) を 2D 配列のObject
s である heapArray に格納したヒープがあり、これはintLevels
高さとMath.pow(2, intLevels)
幅があります。仮説として、1、2、3、4、5、6、7、8、および 9 を入力するとします。ヒープは次のようになります。
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);
まだ機能していないようです。ツリーは空のままです。
質問
この2D配列を特定の情報でJTreeにする比較的簡単で柔軟な方法を知っている人はいますか? 正しく実装されていれば、このツリー/ヒープ/配列に 1、2、3、4、5、6、7、8、および 9 を入力すると、上で示した具体的な方法と同じ結果になるはずです。