Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

จะตรวจสอบว่าไบนารีทรีมีผลรวมพา ธ ที่กำหนดใน C # ได้อย่างไร?


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