0
我是受訓者,並有一個問題,我無法單獨解決這個問題。所以請幫助我。我發現很多主題,但我找不到解決方案。 我剛開始學習C#,我不知道如何做到這一點。我知道這是一項簡單的工作,但我真的需要理解並解決它。我嘗試做一些事情,但它只是一些代碼。我用一些值做了我的二叉樹,有一個節點類和打印方法。
請告訴我如何編寫一個可以從控制檯讀取樹的代碼,因爲我不想要任何hardcorde。然後如何找到一個最低的共同祖先 - 我看到了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