实验报告
实验目的
用C#构建一棵二叉树,并从根开始,按层顺序,从右到左,从上到下,依次进行访问
实验环境
VS2019、C#
算法思想
- 递归调用:
在创建和遍历二叉树的过程中需要合理的递归调用函数 - 队列存储:
实验要求的遍历过程,其实就是从上到下,从右到左依次将每个数放入到队列中,然后按顺序依次打印就是想要的结果
实现过程
1、首先将二叉树的根节点push到队列中,判断队列不为NULL,就输出队头的元素
2、判断节点如果有孩子,就将孩子push到队列中
3、遍历过的节点出队列
4、循环操作1~3,直到Tree == NULL。
核心代码
- 实现二叉树结构的类
public class TreeNode
//二叉树的类类型
{
public string Data;
public TreeNode left;
public TreeNode right;
}
- 先序创建二叉树
public static void CreateTree(TreeNode node)//以先序遍历的方式创建二叉树
{
node.Data = Console.ReadLine();
if (node.Data == "#" || String.IsNullOrEmpty(node.Data.ToString()))
return;
node.left = new TreeNode();
CreateTree(node.left);
if (node.left.Data == "#")
node.left = null;
node.right = new TreeNode();
CreateTree(node.right);
if (node.right.Data == "#")
node.right = null;
}
需要对
void CreateTree(TreeNode node)
函数进行递归
- 对二叉树按要求的方式进行遍历
public static void inlevelOrderr(TreeNode tree)
{
Queue<object> queue = new Queue<object>();
queue.Enqueue(tree);
while (queue.Count > 0)
{
TreeNode node = queue.Dequeue() as TreeNode;
Console.WriteLine(node.Data);
if (node.right != null)
queue.Enqueue(node.right);
if (node.left != null)
queue.Enqueue(node.left);
}
}
测试结果
先序创建二叉树
二叉树结构如图:
按要求遍历后输出1 3 2 7 6 5 4
程序运行结果:
注意:#表示该节点为空