C#反层序遍历

it2024-12-28  10

实验报告

实验目的

用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

程序运行结果:

注意:#表示该节点为空

最新回复(0)