私は訓練生であり、この問題だけでは解決できない問題があります。だから私を助けてください。私は多くのトピックを見つけましたが、解決策を見つけることができませんでした。 私はちょうどC#を学び始めます、そして、私はこれをどうやって行うのか分かりません。私はそれが単純な仕事だが、本当に私はそれを理解し解決する必要があることを知っている。私は何かをしようとするが、それはいくつかのコードだけです。私はバイナリツリーをいくつかの値で行い、ノードクラスとプリントメソッドを持っていました。
ハードコアを持っていないので、コンソールからツリーを読むことができるコードを書く方法を教えてください。そして、最も低い共通の祖先を見つける方法 - 私はBFSとDFSアルゴリズムを見て、何かを見つけることができるかもしれませんが、わかりません。
これについて多くのことを読んだことがありますが、多くのことを説明することはできません。彼女 は、ここに私のコードです:バイナリツリーで最も低い共通祖先、入力とアルゴリズムを読む
class Program
{
static void Main(string[] args)
{
var binatyTree = new BinaryTree<int>(1,
new BinaryTree<int>(2,
new BinaryTree<int>(4),
new BinaryTree<int>(5)),
new BinaryTree<int>(3,
new BinaryTree<int>(6,
new BinaryTree<int>(9),
new BinaryTree<int>(10)),
new BinaryTree<int>(7))
);
Console.WriteLine("Binary Tree:");
binatyTree.Print();
}
}
私のバイナリツリーと印刷方法:
public class BinaryTree<T>
{
public T Value { get; set; }
public BinaryTree<T> LeftChildren { get; set; }
public BinaryTree<T> RightChildren { get; set; }
public BinaryTree(T value, BinaryTree<T> leftChildren = null, BinaryTree<T> rightChildren = null)
{
this.Value = value;
this.LeftChildren = leftChildren;
this.RightChildren = rightChildren;
}
public void Print (int indent = 0)
{
Console.Write(new string (' ', 2*indent));
Console.WriteLine(this.Value);
if (this.LeftChildren != null)
{
this.LeftChildren.Print(indent + 1);
}
if (this.RightChildren != null)
{
this.RightChildren.Print(indent + 1);
}
}
私のクラスのノード:
class Node
{
private int data;
private Node left;
private Node right;
public Node(int data = 0)
{
this.data = 0;
left = null;
right = null;
}
}
は、だから私は本当にので、すべての接続を理解する必要がありますしてくださいあなたが私のために説明して助けてくれたら、どうかしてください。
質問を分割してください。彼らは関連していません – Dolev
最も低い共通祖先はこれを見つけるのが難しいです。予想される実行時間はどのくらいですか? – Dolev