成都做网站开发的公司,铝基板营销型网站建设,ps做网站原形,百度seo查询收录查询目录
一、涉及到的知识点
1.Comparer.Default 属性
2.实现二叉树类BinaryTree步骤
#xff08;1#xff09;先设计一个泛型节点类
#xff08;2#xff09;再设计一个泛型的二叉树类
#xff08;3#xff09;最后设计Main方法
二、 使用泛型节点类 Node实现二叉树…目录
一、涉及到的知识点
1.Comparer.Default 属性
2.实现二叉树类BinaryTree步骤
1先设计一个泛型节点类
2再设计一个泛型的二叉树类
3最后设计Main方法
二、 使用泛型节点类 Node实现二叉树类BinaryTree 一、涉及到的知识点
1.ComparerT.Default 属性 返回由泛型参数指定的类型的默认排序顺序比较器。
public static System.Collections.Generic.ComparerT Default { get; }属性值
ComparerT
继承 ComparerT 并作为 T 类型的排序顺序比较器的对象。 ComparerT.Default 属性是 C# 中 System.Collections.Generic命名空间下的一个属性。它返回一个 ComparerT 对象的默认实例该对象可以对泛型集合中的对象进行比较。默认情况下这个比较器根据对象的自然顺序进行比较即通过调用对象的 CompareTo 方法进行比较。
// ComparerT.Default 属性namespace _135_3
{public class Program{public static void Main(string[] args){ArgumentNullException.ThrowIfNull(args);Listint numbers [3, 1, 4, 2];// 使用默认比较器对集合进行排序numbers.Sort(Comparerint.Default);Console.WriteLine(string.Join(, , numbers));}}
}
//运行结果
/*
1, 2, 3, 4*/ 在这个例子中创建了一个包含整数的列表。然后使用 Comparerint.Default 属性提供的默认比较器对列表进行排序。最后输出排序后的列表可以看到数字已经按照升序排列。
2.实现二叉树类BinaryTreeT步骤
1先设计一个泛型节点类
public class NodeT(T value)
{public T Data { get; set; } value;public NodeT? Left { get; set; } null;public NodeT? Right { get; set; } null;
}
2再设计一个泛型的二叉树类
public class BinaryTreeT
{public NodeT? Root { get; private set; }public void AddNode(T value){NodeT newNode new(value);if (Root null){Root newNode;}else{NodeT current Root;while (true){if (ComparerT.Default.Compare(value, current.Data) 0){if (current.Left null){current.Left newNode;break;}current current.Left;}else{if (current.Right null){current.Right newNode;break;}current current.Right;}}}}
}
3最后设计Main方法 定义一个二叉树类的对象引用类中的方法。
BinaryTreeint tree new();
二、 使用泛型节点类 NodeT实现二叉树类BinaryTreeT
// 使用泛型节点类 NodeT设计实现二叉树类
namespace _135_1
{public class NodeT(T value){public T Data { get; set; } value;public NodeT? Left { get; set; } null;public NodeT? Right { get; set; } null;}public class BinaryTreeT{public NodeT? Root { get; private set; }public void AddNode(T value){NodeT newNode new(value);if (Root null){Root newNode;}else{NodeT current Root;while (true){if (ComparerT.Default.Compare(value, current.Data) 0){if (current.Left null){current.Left newNode;break;}current current.Left;}else{if (current.Right null){current.Right newNode;break;}current current.Right;}}}}}class Program{static void Main(string[] args){ArgumentNullException.ThrowIfNull(args);BinaryTreeint tree new();tree.AddNode(5);tree.AddNode(3);tree.AddNode(8);tree.AddNode(1);tree.AddNode(4);tree.AddNode(7);Console.WriteLine(中序遍历);PrintInOrder(tree.Root!);Console.WriteLine(前序遍历);PrintPreOrder(tree.Root!);Console.WriteLine(后序遍历);PrintPostOrder(tree.Root!);Console.ReadKey();}static void PrintInOrder(Nodeint node){if (node ! null){PrintInOrder(node.Left!);Console.WriteLine(node.Data);PrintInOrder(node.Right!);}}static void PrintPreOrder(Nodeint node){if (node ! null){Console.WriteLine(node.Data);PrintPreOrder(node.Left!);PrintPreOrder(node.Right!);}}static void PrintPostOrder(Nodeint node){if (node ! null){PrintPostOrder(node.Left!);PrintPostOrder(node.Right!);Console.WriteLine(node.Data);}}}
}
//运行结果
/*
中序遍历
1
3
4
5
7
8
前序遍历
5
3
1
4
8
7
后序遍历
1
4
3
7
8
5*/ 在这个实例中使用 ComparerT.Default 来比较两个值的大小。这个方法适用于任何实现了 System.IComparableT 接口的类型因此可以使用任何实现了该接口的值类型或引用类型。 这个程序的主要功能是添加一个新的节点到二叉树中。它首先检查根节点是否为空如果为空则将新的节点设置为根节点。否则它将从根节点开始递归地遍历二叉树找到合适的位置插入新的节点。 这个程序的实现是正确的它可以用于存储和操作实现了 System.IComparableT 接口的类型。可以根据需要修改和扩展这个程序例如可以添加其他方法来遍历和操作二叉树。