gpt4 book ai didi

java - 递归生成ASCII二叉树

转载 作者:搜寻专家 更新时间:2023-10-30 21:06:24 25 4
gpt4 key购买 nike

这是我的代码需要做什么的图片。

通话前:

            +----+
| -9 |
+----+
/ \
/ \
+----+ +----+
| 3 | | 15 |
+----+ +----+
/ / \
/ / \
+----+ +----+ +----+
| 0 | | 12 | | 24 |
+----+ +----+ +----+
/ \
/ \
+----+ +----+
| 6 | | -3 |
+----+ +----+

通话后:

            +----+
| -9 |
+----+
/ \
/ \
+----+ +----+
| 6 | | 30 |
+----+ +----+
/ / \
/ / \
+----+ +----+ +----+
| 0 | | 24 | | 48 |
+----+ +----+ +----+
/ \
/ \
+----+ +----+
| 12 | | -3 |
+----+ +----+

基本上,这个问题要求我将整数二叉树中大于 0 的所有数据值加倍。我下面的代码针对一些值执行此操作,但提前停止。我不确定如何递归地解决这个问题。这就是上面给出的树的输出结果。

       overallRoot
_[-9]_______________
/ \
_[6] _____[30]
/ / \
[0] _[12] [24]
/ \
[6] [-3]
public void doublePositives() {
doublePositives(overallRoot);
}

private IntTreeNode doublePositives(IntTreeNode root) {
if (root != null) {
if (root.data > 0) {
root.data = 2 * root.data;
} else {
root.left = doublePositives(root.left);
root.right = doublePositives(root.right);
}
}
return root;
}

最佳答案

如果要加倍节点,您仍然需要遍历树。删除 else 以便您始终遍历。另外,我删除了分配,因为您没有更改树结构:

if(root != null) {
if(root.data > 0) {
root.data = 2 * root.data;
}
doublePositives(root.left);
doublePositives(root.right);
}

关于java - 递归生成ASCII二叉树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17016512/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com