C#数据结构-二叉树-顺序存储结构

C#数据结构-二叉树-顺序存储结构,第1张

概述什么是二叉树:每个树的节点只有两个子树的树形结构。 为什么使用顺序存储结构:使用数组存放满二叉树的各结点非常方便,可以根据一个结点的索引号很容易地推算出它的双亲、孩子、兄弟等结点的编号,从而对这些结点

什么是二叉树:每个树的节点只有两个子树的树形结构。

为什么使用顺序存储结构:使用数组存放满二叉树的各结点非常方便,可以根据一个结点的索引号很容易地推算出它的双亲、孩子、兄弟等结点的编号,从而对这些结点进行访问,这是一种存储二叉满二叉树或完全二叉树的最简单、最省空间的做法。

 /// <summary>/// 顺序存储二叉树</summary>public class SequentialStorageBinaryTree<T>{    <summary>     用于存储节点的数组    </summary>    private T[] data;     节点数    private int count;    public SequentialStorageBinaryTree(T[] arr = null)    {        if (arr == )            data = new T[0];        else            data = arr;        count = data.Length;    }     增加    </summary>    <param name="item"></param>    bool Add(T item)    {        List<T> List = data.ToList<T>();        List.Add(item);        data = List.ToArray();        count = data.Length;        return true;    }}

通过数组存储结构为:

 

1、层次遍历

 层次遍历voID LevelTraversal(){    for (int i = 0; i < count; i++)    {        Console.Write(data[i] + " ");    }}

 

2、先序遍历

 先序遍历</summary><param name="index"></param>voID PreorderTraversal(int index =){    //递归的终止条件    if (index >= count || index <)        return;    int number = index + 1;    Console.Write(data[index] + );    int leftIndex = number * 2;做节点    int rightIndex = number * 2 + ;    PreorderTraversal(leftIndex - );    PreorderTraversal(rightIndex - );}

 

 3、中序遍历

 中序遍历voID MIDdlePrefaceTraversal(int index = if (index >= count || index < ;        ;    MIDdlePrefaceTraversal(leftIndex - );    Console.Write(data[index] + );    MIDdlePrefaceTraversal(rightIndex - );}

 

 

4、后续遍历

 后序遍历voID AfterwordTraversal(;    AfterwordTraversal(leftIndex - );    AfterwordTraversal(rightIndex - );}

 

 现在我们测试下:

SequentialStorageBinaryTree<string> bTree = new SequentialStorageBinaryTree<string>();bTree.Add("A);bTree.Add(BCDEFG);先序遍历Console.Write(先序遍历:);bTree.PreorderTraversal();Console.Writeline();中序遍历Console.Write(中序遍历:);bTree.MIDdlePrefaceTraversal();Console.Writeline();后序遍历:);bTree.AfterwordTraversal();Console.Writeline();层次遍历Console.Write(层次遍历:);bTree.LevelTraversal();Console.ReadKey();

输出:

 

 

 

 

 

 

总结

以上是内存溢出为你收集整理的C#数据结构-二叉树-顺序存储结构全部内容,希望文章能够帮你解决C#数据结构-二叉树-顺序存储结构所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1213254.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-04
下一篇2022-06-04

发表评论

登录后才能评论

评论列表(0条)

    保存