다음은 내 코드에서 수행해야하는 작업입니다.재귀 이진 검색 트리 x = 변경 (x)
Before Call:
+----+
| -9 |
+----+
/ \
/ \
+----+ +----+
| 3 | | 15 |
+----+ +----+
/ / \
/ / \
+----+ +----+ +----+
| 0 | | 12 | | 24 |
+----+ +----+ +----+
/ \
/ \
+----+ +----+
| 6 | | -3 |
+----+ +----+
After Call:
+----+
| -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;
}
+1! – arynaq