HasPathsum รับพารามิเตอร์ 2 ตัว อันแรกคือโหนดทรีและอื่น ๆ คือค่าผลรวม ขั้นแรกเราจะตรวจสอบว่าโหนดนั้นเป็นโมฆะหรือไม่ หากโหนดเป็นโมฆะเราจะคืนค่าเท็จ หากโหนดไม่เป็นโมฆะ เราจะเรียกวิธีการเรียกซ้ำของ HasPathSum ในแต่ละขั้นตอนแบบเรียกซ้ำ เราจะลบค่ารวมออกจากค่าโหนดต่อไป หากค่าของผลรวมถึง 0 เราจะสรุปได้ว่าต้นไม้ที่กำหนดมีเส้นทางที่เท่ากับผลรวมและคืนค่าเป็นจริง
ตัวอย่าง
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