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
-
C ++を使用してOpenCVでバイナリイメージを反転する方法は?
バイナリイメージを反転するとは、ピクセル値を反転することを意味します。視覚的な観点から、バイナリイメージを反転すると、白のピクセルは黒に変換され、黒のピクセルは白に変換されます。 この関数の基本的な形式は-です。 cvtColor(original_image, grayscale_image, COLOR_BGR2GRAY); 次の行は、グレースケール画像をバイナリ画像に変換し、変換された画像を「binary_image」行列に保存しています。 threshold(grayscale_image, binary_image, 100, 255, THRESH_BINARY); ここで、
-
C++でRMQを使用してバイナリツリーでLCAを検索する
コンセプト この記事では、ツリー内の2つのノードのLCAをRMQ問題に還元することにより、そのLCAを見つける問題を解決する方法について説明します。 例 最低共通祖先(LCA) ルートツリーTの2つのノードaとbのうち、aとbの両方を子孫として持つ、ルートから最も遠いノードとして定義されます。 たとえば、下の図によると、ノードDとノードIのLCAはノードBです。 LCAの問題を解決するために、非常に多くのアプローチを適用できます。これらのアプローチは、時間と空間の複雑さの点で異なります。 範囲最小クエリ(RMQ) 配列に適用され、指定された2つのインデックス間の最小値を持つ