Đây là hình ảnh về mã của tôi cần làm.Tìm kiếm nhị phân đệ quy Cây x = thay đổi (x)
Before Call:
+----+
| -9 |
+----+
/ \
/ \
+----+ +----+
| 3 | | 15 |
+----+ +----+
/ / \
/ / \
+----+ +----+ +----+
| 0 | | 12 | | 24 |
+----+ +----+ +----+
/ \
/ \
+----+ +----+
| 6 | | -3 |
+----+ +----+
After Call:
+----+
| -9 |
+----+
/ \
/ \
+----+ +----+
| 6 | | 30 |
+----+ +----+
/ / \
/ / \
+----+ +----+ +----+
| 0 | | 24 | | 48 |
+----+ +----+ +----+
/ \
/ \
+----+ +----+
| 12 | | -3 |
+----+ +----+
Về cơ bản, vấn đề này yêu cầu tôi tăng gấp đôi tất cả giá trị dữ liệu lớn hơn 0 trong cây nhị phân của số nguyên. Mã của tôi dưới đây thực hiện điều này cho một vài giá trị nhưng dừng sớm. Tôi không chắc cách sửa lỗi này một cách đệ quy. Đây là những gì đầu ra của tôi trông giống như cho cây được đưa ra ở trên.
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;
}
+1 cho sơ đồ! – arynaq