이진 트리와 합을 감안할 때, 각 경로의 합이 주어진 금액에 해당하는 모든 루트 - 투 - 잎 경로를 찾을 수 있습니다.
참고 : 잎은 자녀가없는 노드입니다.
예:
아래 이진 트리를 감안할 때 sum = 22
,
5 / \ 4~8 / / \ 11 13 4 / \ / \ 7 5 2 1
반환:
[ [5,4,11,2], [5,8,4,5]가 ]
제목 요구 사항은 이진 트리 노드 값의 합에 나와있는 경로의 합과 같다.
그리고 한이 질문의 증가에 할 수있는 이진 트리의 합과 같다 같은 질문에 비슷한. 이 질문에 문제 및뿐만 아니라 같은 생각에, 경로에 잎 노드에 루트 노드를 계산하는 재귀 적 방법의 사용 가치는 덧붙였다.
경로를 기록하는 다른 배열 밖으로 롤백 노드. 밖으로 리프 노드에 다음 문제는 트리 노드에서 다른 아이가 요구 사항을 충족할지 여부를 결정할 때 플러스와 합과 같다 롤백합니다.
특정 코드는 다음과 같이 :
클래스 해결 { 공개 : 벡터 <벡터 < INT >> pathSum (*의 TreeNode의 뿌리, INT의 합) { 벡터 <벡터 < INT >> 입술; 벡터 < INT > 아웃 ; 경로 (루트, 합계, 밖으로 , 고해상도); 반환 입술을; } 무효 경로 (*의 TreeNode의 뿌리, INT의 합 벡터 < INT > 및 아웃 벡터 <벡터 < INT >> 및 고해상도)를 { 경우 (! 루트 ) { 입술= {}; 반환 ; } 아웃 .push_back (루트 -> 발); 만약 (! 루트 -> 좌측 && 루트 -> 오른쪽 && 루트 -> 브로 == 합) { res.push_back ( 아웃 ); } 경우 (루트 -> 좌측) 경로 (루트 -> 좌, 합계 루트 레벨> 계산해 출력 , 해상도); 경우 (루트 -> 오른쪽) 경로 (루트 -> 오른쪽 합계 루트 레벨> 계산해 출력 , 해상도); 아웃 .pop_back (); 반환 ; } };