【发布时间】:2015-07-26 05:39:18
【问题描述】:
我已经创建了一个二叉搜索树,但是我不知道如何将它放入一个二维数组中(我对递归方式和非递归方式都感兴趣)并打印出来。
如下图
7
/ \
5 9
/ \ / \
4 6 8 15
.
.
.
对不起,含糊不清的表达。基本上我试图 1)从文件中读取数字序列并为它们构建一个二叉搜索树。
2) 我需要将树绘制成字符数组(必须是二维数组)来表示绘图区域。所以树的根必须在数组的第一行中间,第一个左孩子必须在第二行一半的中间,第一个右孩子必须在另一个中间第二排的一半。等等。
如下图
------------34------------
-----24------------56-----
---9-----32-----41----57--
3)最后我需要打印出来(作为第一张图)。
我有 BinaryNode.class BinaryTree.class 在树类里面, root、left child 和 right child 有几种基本方法 getmethod 和 setmethod。
这是我在主类上的部分代码:
BinaryTree BinarySearchTree = new BinaryTree();
FileReader theFile;
BufferedReader inFile;
String oneLine;
try{
theFile = new FileReader(args[0]);
inFile = new BufferedReader(theFile);
while((oneLine = inFile.readLine())!= null){
String[] list = oneLine.split(",");
for(int i=0; i<list.length; i++){
BinaryNode TreeNode = new BinaryNode(list[i]);
BinaryTree.insert(BinarySearchTree, TreeNode.element);
}
}
}
catch (Exception e) {
System.out.println(e);
}
// building binary search tree
public static BinaryTree insert(BinaryTree t, Object x){
if(t.isEmpty())
return new BinaryTree(x);
else{
if(((Integer)t.getRootobj()).intValue()<((Integer)x).intValue())
t.setRight(insert(t.getRight(),x));
else
t.setLeft(insert(t.getLeft(),x));
return t;
}
【问题讨论】:
-
我们可以看看你已经拥有的一些代码吗?
-
@halfer 确定。谢谢你提醒我
标签: java arrays binary-tree