HasPathsum은 2개의 매개변수를 취합니다. 하나는 트리 노드이고 다른 하나는 합계 값입니다. 처음에는 노드가 null인지 여부를 확인하고 노드가 null이면 false를 반환합니다. 노드가 null이 아니면 HasPathSum 재귀 메서드를 호출합니다. 각 재귀 단계에서 계속해서 노드 값에서 합계 값을 뺍니다. 합계 값이 0에 도달하면 주어진 트리에 합계와 동일한 경로가 있고 true를 반환한다는 결론에 도달합니다.
예시
public class TreesPgm{ public class Node{ public int Value; public Node LeftChild; public Node RightChild; public Node(int value){ this.Value = value; } public override String ToString(){ return "Node=" + Value; } } public bool HasPathSum(Node node, int sum){ if (root == null){ return false; } return helperHasPathSum(node, sum); } private bool helperHasPathSum(Node root, int sum){ if (root == null){ return false; } sum -= root.Value; if (root.LeftChild == null && root.RightChild == null && sum == 0){ return true; } return helperHasPathSum(root.LeftChild, sum) || helperHasPathSum(root.RightChild, sum); } }
입력
5 2 6 1 3 7
출력
True