C#
 Computer >> コンピューター >  >> プログラミング >> C#

二分木がC#で指定されたパスの合計を持っているかどうかを確認するにはどうすればよいですか?


HasPathsumは2つのパラメーターを取ります。1つはツリーノードで、もう1つは合計値です。最初に、ノードが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

  1. Pythonの特定の二分木でBSTの最大合計値を見つけるプログラム

    二分木が提供されていると仮定します。そのサブツリーに二分探索木(BST)が存在するかどうかを調べ、最大のBSTの合計を見つける必要があります。合計を求めるために、そのBSTの各ノードの値を加算します。合計値を出力として返します。 したがって、入力が次のような場合 その場合、出力は12になります。 与えられた二分木のBSTは-です ノードの合計=12。 これを解決するには、次の手順に従います- c:=0 m:=null 値:=0 関数recurse()を定義します。これはノードを取ります ノードがnullでない場合、 left_val:=recurse(ノード

  2. Pythonでの二分木最大パス合計

    空でない二分木が1つあるとします。パスの合計を見つける必要があります。したがって、ここでのパスとは、開始ノードから親子接続が存在するノードまでのノードのシーケンスです。パスには少なくとも1つのノードが含まれている必要があり、ルートノードを通過する必要はありません。したがって、入力ツリーが-の場合 ここで、出力は32になります。 これを解決するには、次の手順に従います- solve()と呼ばれる1つのメソッドを定義します。これはノードを取ります nodeがnullまたはnodeの値が0の場合、0を返します left:=最大0およびsolve(ノードの左側) ri