3. 假设data = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J' };这个是我们要存储的数据,用c#语言代码实现求二叉树的先序遍历,中序遍历和后序遍历,并对每行代码进行注释。
时间: 2024-01-27 22:06:33 浏览: 52
以下是C#语言代码实现二叉树的先序遍历、中序遍历和后序遍历,并对每行代码进行注释:
```csharp
using System;
public class TreeNode {
public char val;
public TreeNode left;
public TreeNode right;
public TreeNode(char x) { val = x; }
}
public class BinaryTree {
// 先序遍历
public void PreorderTraversal(TreeNode root) {
if (root == null) return; // 如果节点为空,直接返回
Console.Write(root.val + " "); // 输出节点值
PreorderTraversal(root.left); // 递归遍历左子树
PreorderTraversal(root.right); // 递归遍历右子树
}
// 中序遍历
public void InorderTraversal(TreeNode root) {
if (root == null) return; // 如果节点为空,直接返回
InorderTraversal(root.left); // 递归遍历左子树
Console.Write(root.val + " "); // 输出节点值
InorderTraversal(root.right); // 递归遍历右子树
}
// 后序遍历
public void PostorderTraversal(TreeNode root) {
if (root == null) return; // 如果节点为空,直接返回
PostorderTraversal(root.left); // 递归遍历左子树
PostorderTraversal(root.right); // 递归遍历右子树
Console.Write(root.val + " "); // 输出节点值
}
static void Main(string[] args) {
char[] data = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J' };
TreeNode root = CreateBinaryTree(data, 0, data.Length - 1); // 创建二叉树
BinaryTree bt = new BinaryTree();
Console.WriteLine("先序遍历结果:");
bt.PreorderTraversal(root); // 先序遍历
Console.WriteLine("\n中序遍历结果:");
bt.InorderTraversal(root); // 中序遍历
Console.WriteLine("\n后序遍历结果:");
bt.PostorderTraversal(root); // 后序遍历
}
// 创建二叉树
public static TreeNode CreateBinaryTree(char[] data, int start, int end) {
if (start > end) return null; // 如果起始位置大于结束位置,返回null
int mid = (start + end) / 2; // 找到中间位置
TreeNode root = new TreeNode(data[mid]); // 创建根节点
root.left = CreateBinaryTree(data, start, mid - 1); // 递归创建左子树
root.right = CreateBinaryTree(data, mid + 1, end); // 递归创建右子树
return root; // 返回根节点
}
}
```
阅读全文