这是我的代码需要执行的操作的图片。
通话前:
+----+
| -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;
}