急!!!!用Java编写,使用设计模式中Builder模式创建树形菜单,其中要求树形菜单为一个满二叉树

输入参数为树的深度。如输入为3则输出以下树形菜单(注意缩进)Level_1Level_2_1Level_3_1_1Level_3_1_2Level_2_2Level_3_... 输入参数为树的深度。如输入为3则输出以下树形菜单
(注意缩进)
Level_1
Level_2_1
Level_3_1_1
Level_3_1_2
Level_2_2
Level_3_2_1
Level_3_2_2
请详细回答,谢谢。
代码私信,成功运行后可加分
展开
 我来答
百度网友31c31c0
2014-11-02
知道答主
回答量:24
采纳率:0%
帮助的人:13.4万
展开全部
public class PrintTreeMenu {
int level = 1;

public static void main(String args[]) throws Exception {
PrintTreeMenu pt = new PrintTreeMenu();
pt.print("Level_1", 1, 4);
}

// need parent nodeString, the last letter of parent string
private void print(String val, int i, int n) {
if (i < Math.pow(2, n)) {
if (level > 1)
val = val + "_" + (i % 2 == 0 ? 1 : 2);
System.out.println(val);
val = val.replace("Level_" + level, "Level_" + (level + 1));
level++;
String baseVal = val.trim();
val = getMenuStr(val.length()) + baseVal;
print(val, 2 * i, n);
print(val, 2 * i + 1, n);
level--;
}

}

private String getMenuStr(int n) {
String spaces = "";
for (int i = 0; i < n; i++)
spaces += " ";
return spaces;
}
}

---------
output:
Level_1
       Level_2_1
                Level_3_1_1
                           Level_4_1_1_1
                           Level_4_1_1_2
                Level_3_1_2
                           Level_4_1_2_1
                           Level_4_1_2_2
       Level_2_2
                Level_3_2_1
                           Level_4_2_1_1
                           Level_4_2_1_2
                Level_3_2_2
                           Level_4_2_2_1
                           Level_4_2_2_2
不知道对不对,花了几个小时,其实做出来也没有意义了,感觉有点拼凑出来的味道。
这个level是第几层的意思,i是根,2*i是左,2*i+1是右。
追问
你会设计模式吗 ,这个是准备用设计模式中的builder模式进行解决的,但是我没想到该如何抽象,可以再帮我看看嘛
追答
那个我不懂啊,抱歉。
佳达源
2024-10-28 广告
AR0144CSSM20SUKA0-CPBR这款产品,作为我司产品线中的重要一员,集成了高精度的传感器技术与先进的图像处理算法,广泛应用于安防监控、工业自动化及机器视觉等领域。其卓越的性能与稳定性,确保了在各种复杂环境下的精准数据采集与高效... 点击进入详情页
本回答由佳达源提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式