热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

c++二叉树的层序遍历_C#实现二叉树四种遍历(顺序存储结构)

图一:完全二叉树以及对应的数组图二:满二叉树以及对应的数组图三:普通二叉树以及对应的数组(字符^代表空节点)四:我们以这三个
be82c1515248f544a09ceb18df30d91e.png

图一:完全二叉树以及对应的数组

a88feae1270668400b7f8a6476dcaf4b.png

图二:满二叉树以及对应的数组

db10f63b7926fdf6d4b4d5186f29b043.png

图三:普通二叉树以及对应的数组 (字符'^'代表空节点)

8502f2263110b1e5579ae66fddf91065.png

四:我们以这三个二叉树为例,使用C#实现四种遍历

(1)构造一个二叉树顺序结构类

/****************************************************文件:BiTree.cs作者:黄山学院--Li Qingshan邮箱: 2781838262@qq.com日期:2020/05/19 12:24 功能:
*****************************************************/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace 二叉树_顺序存储
{public class BiTree{public T[] data;private int nextIndex = 0;public BiTree(int length){data = new T[length];}public bool Add(T item){if (nextIndex >= data.Length){return false;}else{data[nextIndex] = item;nextIndex++;return true;}}//前序遍历public void PreorderTraversal(int number){//当下标越界或者当前元素为'^'时此次递归分支终止if (number > data.Length || data[number - 1].Equals('^')){return;}Console.Write(data[number - 1] + " ");int leftChildNum = number * 2;PreorderTraversal(leftChildNum);int rightChildNum = number * 2 + 1;PreorderTraversal(rightChildNum);}//中序遍历public void MiddleTraversal(int number){//当下标越界或者当前元素为'^'时此次递归分支终止if (number > data.Length || data[number - 1].Equals('^')){return;}int leftChildNum = number * 2;MiddleTraversal(leftChildNum);Console.Write(data[number - 1] + " ");int rightChildNum = number * 2 + 1;MiddleTraversal(rightChildNum);}//后序遍历public void PostorderTraversal(int number){//当下标越界或者当前元素为'^'时此次递归分支终止if (number > data.Length || data[number - 1].Equals('^')){return;}int leftChildNum = number * 2;PostorderTraversal(leftChildNum);int rightChildNum = number * 2 + 1;PostorderTraversal(rightChildNum);Console.Write(data[number - 1] + " ");}//层序遍历public void LayerTraversal(){for (int i = 0; i }

(1)在main方法中定义三上述三树,并调用遍历方法

/****************************************************文件:Program.cs作者:黄山学院--Li Qingshan邮箱: 2781838262@qq.com日期:2020/05/19 15:49 功能:
*****************************************************/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace 二叉树_顺序存储
{class Program{static void Main(string[] args){//完全二叉树//char[] CompleteBinaryTree = new[] { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J' };//满二叉树//char[] FullBinaryTree = new[] { 'A', 'B', 'C', 'D', 'E', 'F', 'G'};//普通二叉树char[] NormalBinaryTree = new[] { 'A', 'B', 'C', 'D', '^', 'F', 'G', '^', 'H', '^', '^', 'I' };BiTree biTree = new BiTree(NormalBinaryTree.Length);for (int i = 0; i }

(3)以图三二叉树为例,输出结果为:

be0bcab2ca4b07c8a89204f57c7d2e43.png



推荐阅读
  • vue引入echarts地图的四种方式
    一、vue中引入echart1、安装echarts:npminstallecharts--save2、在main.js文件中引入echarts实例:  Vue.prototype.$echartsecharts3、在需要用到echart图形的vue文件中引入:   importechartsfrom"echarts";4、如果用到map(地图),还 ... [详细]
  • 普通树(每个节点可以有任意数量的子节点)级序遍历 ... [详细]
  • 深入解析Java中的空指针异常及其预防策略
    空指针异常(NullPointerException,简称NPE)是Java编程中最常见的异常之一。尽管其成因显而易见,但开发人员往往容易忽视或未能及时采取措施。本文将详细介绍如何有效避免空指针异常,帮助开发者提升代码质量。 ... [详细]
  • WPF项目学习.一
    WPF项目搭建版权声明:本文为博主初学经验,未经博主允许不得转载。一、前言记录在学习与制作WPF过程中遇到的解决方案。使用MVVM的优点是数据和视图分离,双向绑定,低耦合,可重用行 ... [详细]
  • 本文整理了一份基础的嵌入式Linux工程师笔试题,涵盖填空题、编程题和简答题,旨在帮助考生更好地准备考试。 ... [详细]
  • C语言编写线程池的简单实现方法
    2019独角兽企业重金招聘Python工程师标准好文章,一起分享——有时我们会需要大量线程来处理一些相互独立的任务,为了避免频繁的申请释放线程所带 ... [详细]
  • 本文介绍了 Go 语言中的高性能、可扩展、轻量级 Web 框架 Echo。Echo 框架简单易用,仅需几行代码即可启动一个高性能 HTTP 服务。 ... [详细]
  • 检查在所有可能的“?”替换中,给定的二进制字符串中是否出现子字符串“10”带 1 或 0 ... [详细]
  • 稀疏数组是一种用于存储和处理大部分元素为零或相同值的数组的技术。通过记录非零元素的位置和值,稀疏数组可以显著减少存储空间和提高处理效率。 ... [详细]
  • 【线段树】  本质是二叉树,每个节点表示一个区间[L,R],设m(R-L+1)2(该处结果向下取整)左孩子区间为[L,m],右孩子区间为[m ... [详细]
  • Leetcode学习成长记:天池leetcode基础训练营Task01数组
    前言这是本人第一次参加由Datawhale举办的组队学习活动,这个活动每月一次,之前也一直关注,但未亲身参与过,这次看到活动 ... [详细]
  • iOS 不定参数 详解 ... [详细]
  • 包含phppdoerrorcode的词条 ... [详细]
  • Hadoop的文件操作位于包org.apache.hadoop.fs里面,能够进行新建、删除、修改等操作。比较重要的几个类:(1)Configurati ... [详细]
  • 多线程基础概览
    本文探讨了多线程的起源及其在现代编程中的重要性。线程的引入是为了增强进程的稳定性,确保一个进程的崩溃不会影响其他进程。而进程的存在则是为了保障操作系统的稳定运行,防止单一应用程序的错误导致整个系统的崩溃。线程作为进程的逻辑单元,多个线程共享同一CPU,需要合理调度以避免资源竞争。 ... [详细]
author-avatar
angel2502899287_238
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有