用C#创建二叉树节点类,二叉树类并实现二叉树的3种遍历递归算法二叉树的层序遍历算法。
时间: 2024-12-03 07:15:05 浏览: 16
在C#中,我们可以创建一个简单的二叉树节点类(BinaryTreeNode)和二叉树类(BinaryTree),然后实现三种基本的递归遍历算法(前序、中序和后序遍历),以及层序遍历。以下是这些类的基本结构和部分关键方法:
```csharp
// 定义二叉树节点类
public class BinaryTreeNode<T>
{
public T Value { get; set; }
public BinaryTreeNode<T> Left { get; set; }
public BinaryTreeNode<T> Right { get; set; }
public BinaryTreeNode(T value)
{
Value = value;
}
}
// 定义二叉树类
public class BinaryTree<T>
{
private BinaryTreeNode<T> root;
// 构造函数,设置根节点
public BinaryTree(BinaryTreeNode<T> root)
{
this.root = root;
}
// 递归遍历方法
public void PreOrderRecursion(BinaryTreeNode<T> node)
{
if (node != null)
{
Console.Write(node.Value + " "); // 先访问当前节点
PreOrderRecursion(node.Left); // 然后左子树
PreOrderRecursion(node.Right); // 最后右子树
}
}
public void InOrderRecursion(BinaryTreeNode<T> node)
{
if (node != null)
{
InOrderRecursion(node.Left);
Console.Write(node.Value + " "); // 中间访问当前节点
InOrderRecursion(node.Right);
}
}
public void PostOrderRecursion(BinaryTreeNode<T> node)
{
if (node != null)
{
PostOrderRecursion(node.Left);
PostOrderRecursion(node.Right);
Console.Write(node.Value + " "); // 最后访问当前节点
}
}
// 层次遍历方法(广度优先搜索)
public void LevelOrderTraversal()
{
Queue<BinaryTreeNode<T>> queue = new Queue<BinaryTreeNode<T>>();
queue.Enqueue(root);
while (queue.Count > 0)
{
BinaryTreeNode<T> current = queue.Dequeue();
Console.Write(current.Value + " ");
if (current.Left != null) queue.Enqueue(current.Left);
if (current.Right != null) queue.Enqueue(current.Right);
}
}
}
```
阅读全文