2016-07-18 3 views
1

이진 검색 트리의 각 노드를 자식의 합계로 바꾸는 다음 코드가 있습니다.이진 검색 트리에서 왼쪽 자식의 합

public static void sumofChild(Node root) { 
    if (root == null) return; 
    sumofChild(root.getLeft()); 
    sumofChild(root.getRight()); 
    if (root.getLeft() != null) { 
     int sum = root.getData() + root.getLeft().getData(); 
     root.setData(sum); 
    } 
    if (root.getRight() != null) { 
     int sum = root.getData() + root.getRight().getData(); 
     root.setData(sum); 
    } 
} 

이제 각 노드를 왼쪽 자식의 합계로만 업데이트하려면이 코드를 수정하고 싶습니다.

이 내 입력 나무,

12 
    9 14 
7 10 13 17 

출력 트리 할 필요가, 내가 바로 그것을 얻을 수없는 것

28 
    16 27 
7 10 13 17 

가 그래서 본질적으로합니다. 어떤 도움을 주셔서 감사합니다.

+0

왜 그냥 getRight 합 if 문을 제거? – Compass

+0

내부 노드의 경우 오른쪽 합계가 왼쪽 합계의 일부이기 때문에 작동하지 않습니다. –

답변

0
public static void sumofChild(Node root) { 
    if (root == null) return; 
    sumofChild(root.getLeft()); 
    sumofChild(root.getRight()); 
    if (root.getLeft() != null) { 
     int sum = root.getData() + root.getLeft().getData(); 
     root.setData(sum); 
    } 
} 
0
int sumOfLeftChildren(Node* root){ 
    if(!root) return 0; 
    sumOfLeftChildren(root->right); 
    return root->val += sumOfLeftChildren(root->left); 
} 
관련 문제