【发布时间】:2016-08-22 09:16:57
【问题描述】:
我无法以教授想要的格式打印出二叉搜索树。
他的格式是这样的:
{(12,10,13),(10,8,11),(8,6,9),(6,4,7),(4,2,5),(2,1,3),(1,*,*),(3,*,*),(5,*,*),(7,*,*),(9,*,*),(11,*,*),(13,*,*)}
子集中的第一个数字是根节点,左右节点是左右子节点。循环迭代后,左子节点将成为根节点。一切正常,直到我到达子集中仅存在一个节点的位置。它只是打印 (1, *, *) 直到最后,我不知道如何以另一种方式做到这一点。这个 toString 方法可以递归做吗?
我的代码:
public String toString()
{
if (root == null)
return "{}";
String str = "{";
Node tmp = root;
for (int i = 0; i < size; i++)
{
if (tmp.right != null && tmp.left == null)
str += "("+tmp.data+", "+tmp.right.data+", *)";
if (tmp.left != null && tmp.right == null)
str += "("+tmp.data+", "+tmp.left.data+", *)";
if (tmp.left == null && tmp.right == null)
str += "("+tmp.data+", *, *)";
else
str += "("+tmp.data+", "+tmp.left.data+", "+tmp.right.data+")";
if (tmp.left != null)
tmp = tmp.left;
}
return str += "}";
}
【问题讨论】:
-
如果格式为
(root,left,right),则应在第一个if语句中翻转*和tmp.right.data
标签: java recursion binary-search-tree