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

C#で再帰を使用してバイナリ検索ツリーを反転するにはどうすればよいですか?


二分探索木を反転するには、ノードをパラメーターとして受け取るメソッドInvertABinarySearchTreeを呼び出します。ノードがnullの場合はnullを返し、ノードがnullでない場合は、左右の子の値を渡すことでInvertABinarySearchTreeを再帰的に呼び出します。右の子の値を左の子に割り当て、左の子の値を右の子に割り当てます。最終的な出力は、それ自体の鏡像となるツリーで構成されます。

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 Node InvertABinarySearchTree(Node node){
      if (node == null){
         return null;
      }
      Node left = InvertABinarySearchTree(node.LeftChild);
      Node right = InvertABinarySearchTree(node.RightChild);
      node.LeftChild = right;
      node.RightChild = left;
      return root;
   }
}

入力

   1
  3 2

出力

   1
  2 3

  1. C ++を使用してOpenCVでバイナリイメージを反転する方法は?

    バイナリイメージを反転するとは、ピクセル値を反転することを意味します。視覚的な観点から、バイナリイメージを反転すると、白のピクセルは黒に変換され、黒のピクセルは白に変換されます。 この関数の基本的な形式は-です。 cvtColor(original_image, grayscale_image, COLOR_BGR2GRAY); 次の行は、グレースケール画像をバイナリ画像に変換し、変換された画像を「binary_image」行列に保存しています。 threshold(grayscale_image, binary_image, 100, 255, THRESH_BINARY); ここで、

  2. C++でRMQを使用してバイナリツリーでLCAを検索する

    コンセプト この記事では、ツリー内の2つのノードのLCAをRMQ問題に還元することにより、そのLCAを見つける問題を解決する方法について説明します。 例 最低共通祖先(LCA) ルートツリーTの2つのノードaとbのうち、aとbの両方を子孫として持つ、ルートから最も遠いノードとして定義されます。 たとえば、下の図によると、ノードDとノードIのLCAはノードBです。 LCAの問題を解決するために、非常に多くのアプローチを適用できます。これらのアプローチは、時間と空間の複雑さの点で異なります。 範囲最小クエリ(RMQ) 配列に適用され、指定された2つのインデックス間の最小値を持つ