奇数の高さのノードの値の合計と偶数の高さのノードの値の合計の差を返す関数を作成するにはどうすればよいですか。バイナリ ツリーのルート ノードが高さ 1 にあると考えると、
入力:
1
2 3
4 5 6 7
8 9 10 11 12 13 14 15
出力: -74 説明:
[ (1 + 4 + 5 + 6 + 7 ) - (2 + 3 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15) = -74 ]
コード:
public static int diff(Node n) {
if (n == null)
return 0;
return Sum(n) - Sum(n.left) - Sum(n.right);
}
public static int Sum(Node root) {
int sum = 0;
if (root == null) {
return sum;
}
sum = sum + root.data;
if (root.left != null) {
sum = sum + Sum(root.left.left) + Sum(root.left.right);
}
if (root.right != null) {
sum = sum + Sum(root.right.left) + Sum(root.right.right);
}
return sum;
}
私はこの解決策を提供しましたが、選択していません...これの何が問題なのかわかりません。