1建立一棵含有n个节点的二叉树,采用二叉链表存储; 2) 输出前序、中序、后续遍历该二叉树的遍历结果。请写出代码,语言要求为c#
时间: 2024-10-19 17:10:57 浏览: 37
创建二叉树二叉链表存储并显示。-数据结构课程幻灯片
在C#中,我们可以使用递归的方式来实现二叉树的构造、前序遍历、中序遍历以及后序遍历。这里是一个简单的例子:
首先,我们创建一个二叉树节点类`TreeNode`:
```csharp
public class TreeNode
{
public int Value { get; set; }
public TreeNode Left { get; set; }
public TreeNode Right { get; set; }
public TreeNode(int value)
{
Value = value;
Left = null;
Right = null;
}
}
```
接着,我们可以构造一个拥有n个节点的二叉树,假设已知节点值的数组`values`:
```csharp
public TreeNode BuildBinaryTree(int[] values, int start, int end)
{
if (start > end)
return null;
int mid = (start + end) / 2;
TreeNode node = new TreeNode(values[mid]);
node.Left = BuildBinaryTree(values, start, mid - 1);
node.Right = BuildBinaryTree(values, mid + 1, end);
return node;
}
```
为了获取三种遍历的结果,我们需要分别定义三个辅助函数:
1. 前序遍历:
```csharp
private void PreOrderTraversal(TreeNode node)
{
if (node != null)
{
Console.Write(node.Value + " ");
PreOrderTraversal(node.Left);
PreOrderTraversal(node.Right);
}
}
```
2. 中序遍历:
```csharp
private void InOrderTraversal(TreeNode node)
{
if (node != null)
{
InOrderTraversal(node.Left);
Console.Write(node.Value + " ");
InOrderTraversal(node.Right);
}
}
```
3. 后序遍历:
```csharp
private void PostOrderTraversal(TreeNode node)
{
if (node != null)
{
PostOrderTraversal(node.Left);
PostOrderTraversal(node.Right);
Console.Write(node.Value + " ");
}
}
```
最后,在主程序里构建并打印:
```csharp
int[] values = ... // 填充你要的节点值
TreeNode root = BuildBinaryTree(values, 0, values.Length - 1);
Console.WriteLine("前序遍历:");
PreOrderTraversal(root);
Console.WriteLine("\n中序遍历:");
InOrderTraversal(root);
Console.WriteLine("\n后序遍历:");
PostOrderTraversal(root);
```
阅读全文