我已經寫了一個代碼,但我有一些問題,但最重要的問題是......為什么陣列不能與 AddNode 一起使用。我知道我即將解決這個問題,但我希望得到一點提示。下一個問題。最小值和最大值的代碼很好,我如何將其移動到類節點?還有最后一個問題。如何制作樹的類深度?
class Node
{
public Node LeftNode { get; set; }
public Node MiddleNode { get; set; }
public Node RightNode { get; set; }
public int Value { get; set; }
public void AddNode(int value)
{
if (value < this.Value)
{
if (LeftNode != null)
{
LeftNode.AddNode(value);
return;
}
LeftNode = new Node(value);
return;
}
if (value > Value)
{
if (RightNode != null)
{
RightNode.AddNode(value);
return;
}
RightNode = new Node(value);
return;
}
if (MiddleNode != null)
{
MiddleNode.AddNode(value);
return;
}
MiddleNode = new Node(value);
}
public Node(int value)
{
this.Value = value;
}
public override string ToString()
{
return $"Value: {Value}";
}
public string SortedString(Array arr)
{
Array.Sort(arr);
foreach (int val in arr)
{
Console.WriteLine(val);
}
return "";
}
public int ValueCount(int value)
{
if (value < Value)
{
if (LeftNode == null)
{
return -1;
}
return LeftNode.ValueCount(value);
}
if (value > Value)
{
if (RightNode == null)
{
return -1;
}
return RightNode.ValueCount(value);
}
if (MiddleNode != null)
{
return 1 MiddleNode.ValueCount(value);
}
return 1;
}
internal int Next(int min, int max)
{
Random rnd = new Random();
return rnd.Next(min, max);
}
}
class Program
{
static void Main(string[] args)
{
var arr = new int[1000];
var rnd = new Node(1);
for (int i = 0; i < arr.Length; i )
{
rnd.AddNode(arr[i]);
//Console.WriteLine(arr[i]);
}
for(int i = 0; i < arr.Length; i )
{
arr[i] = rnd.Next(1, 100);
Console.WriteLine(arr[i]);
}
min = arr[0];
max = arr[0];
for (int i = 1; i < arr.Length; i )
{
if (min > arr[i])
min = arr[i];
if (max < arr[i])
max = arr[i];
}
Console.WriteLine("najwi?ksza liczba" " " max);
Console.WriteLine("najmniejsza liczba" " " min);
Array.Sort(arr);
foreach (int value in arr)
{
Console.WriteLine(value);
}
Console.WriteLine(rnd.ValueCount(6));
Console.WriteLine(rnd.ToString());
}
}
uj5u.com熱心網友回復:
說實話 - 你的代碼有點混亂。首先 - 為什么你有一個指向中間節點的指標(ref)?二叉樹定義每個節點最多有 2 個孩子(左\右)。如果您希望處理重復值,您可以選擇一種策略,將其中一個子節點定義為也包含等于,或者更好地使用 ref 計數(例如:每個節點都有一個值和該值的計數器)。re Min \ Max - 如果您的樹是 BST(似乎是這種情況),您可以通過向左(對于最小值)或向右(對于最大值)進行簡單的樹遍歷來輕松實作這一點。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/401748.html
