亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#實現二叉排序樹代碼實例

2019-10-29 19:58:13
字體:
來源:轉載
供稿:網友

二叉排序樹,又稱為二叉查找樹。它或者是一顆空樹,或者是具有下列性質的二叉樹:

  • 若它的左子樹不為空。則左子樹上所有的結點的值均小于跟的結點值
  • 若它的右子樹部位空,則右子樹的所有結點值均大于它的根結點的值
  • 它的左右子樹也分別是二叉排序樹

1,排序方便 
2,查找方便 
3,便于插入和刪除

C#,二叉排序樹,代碼

C#鏈式存儲二叉排序樹,實現簡單的排序,以及查找,具體代碼如下:

namespace _2_1_3二叉排序樹{  /// <summary>  /// 結點類  /// </summary>  class BSNode  {    //結點    public BSNode LeftChild { get; set; }    public BSNode RightChild { get; set; }    public BSNode Parent { get; set; }    public int Data { get; set; }    // 構造方法    public BSNode(){}    public BSNode(int item)    {      this.Data = item;    }  }}using System;namespace _2_1_3二叉排序樹{  /// <summary>  /// 二叉排序樹  /// </summary>  class BSTree  {    BSNode root = null;    /// <summary>    /// 添加數據    /// </summary>    public void Add(int item)    {      //創建新結點      BSNode newNode = new BSNode(item);      if (root == null)     //若為空,則創建為根結點      {        root = newNode;      }      else      {        BSNode temp = root;        while (true)        {          if (item >= temp.Data) //放在temp結點的右邊          {            if (temp.RightChild == null)            {              temp.RightChild = newNode;              newNode.Parent = temp;              break;            }            else            {              temp = temp.RightChild;            }          }          else          //放在temp結點的左邊          {            if (temp.LeftChild == null)            {              temp.LeftChild = newNode;              newNode.Parent = temp;              break;            }            else            {              temp = temp.LeftChild;            }          }        }      }    }    /// <summary>    /// 中序遍歷二叉樹    /// </summary>    public void MiddleBianli()    {      MiddleBianli(root);    }    //遞歸方式中序遍歷樹    private void MiddleBianli(BSNode node)    {      if (node == null) return;      MiddleBianli(node.LeftChild);      Console.Write(node.Data + " ");      MiddleBianli(node.RightChild);    }    /// <summary>    ///查找方法-1    /// </summary>    public bool Find1(int item)    {      return Find(item, root);    }    private bool Find(int item, BSNode node)    {      if (node == null) { return false; }      if (node.Data == item)      {        return true;      }      else      {        //利用二叉排序樹的便利        if (item > node.Data)        {          return Find(item, node.RightChild);        }        else        {          return Find(item, node.LeftChild);        }      }    }    /// <summary>    /// 查找方法-2    /// </summary>    /// <param name="item"></param>    /// <returns></returns>    public bool Find2(int item)    {      BSNode temp = root;      while (true)      {        if (temp == null) return false;        if (temp.Data == item) return true;        if (item > temp.Data)        {          temp = temp.RightChild;        }        else        {          temp = temp.LeftChild;        }      }    }    public bool Delete(int item)    {      BSNode temp = root;      while (true)      {        if (temp == null) return false;        if (temp.Data == item)        {          Delete(temp);          return true;        }        if (item > temp.Data)        {          temp = temp.RightChild;        }        else        {          temp = temp.LeftChild;        }      }    }    public void Delete(BSNode node)    {      //葉子結點,即無子樹情況      if (node.LeftChild == null && node.RightChild == null)      {        if (node.Parent == null)        {          root = null;        }        else if (node.Parent.LeftChild == node)        {          node.Parent.LeftChild = null;        }        else if (node.Parent.RightChild == node)        {          node.Parent.RightChild = null;        }        return;      }      //只有右子樹的情況      if (node.LeftChild == null && node.RightChild != null)      {        node.Data = node.RightChild.Data;        node.RightChild = null;        return;      }      //只有左子樹的情況      if (node.LeftChild != null && node.RightChild == null)      {        node.Data = node.LeftChild.Data;        node.LeftChild = null;        return;      }      //刪除的結點有左,右子樹      BSNode temp = node.RightChild;      while (true)      {        if (temp.LeftChild != null)        {          temp = temp.LeftChild;        }        else        {          break;        }      }      node.Data = temp.Data;      Delete(temp);    }  }}using System;namespace _2_1_3二叉排序樹{  /// <summary>  /// 測試類  /// </summary>  class Program  {    static void Main(string[] args)    {      BSTree tree = new BSTree();      int[] data = {62,58,28,47,73,99,35,51,93,37 };      foreach (int item in data)      {        tree.Add(item);      }      Console.Write("中序遍歷的結果:");      tree.MiddleBianli();      Console.WriteLine();      Console.WriteLine("Find-1方法查找62是否存在:" + tree.Find1(62));      Console.WriteLine("Find-2方法查找62是否存在:" + tree.Find2(62));      Console.WriteLine("Find-1方法查找63是否存在:" + tree.Find1(63));       Console.WriteLine("Find-2方法查找63是否存在:" + tree.Find2(63));      Console.WriteLine("刪除根結點后的結果:");      tree.Delete(62);      tree.MiddleBianli();      Console.ReadKey();    }  }}

C#,二叉排序樹,代碼

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到c#教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久中文字幕在线| 97在线免费观看| 亚洲精品一区二区三区不| 亚洲黄色av网站| 欧美日韩精品在线播放| 日韩中文字幕在线视频| 成人网页在线免费观看| 91影院在线免费观看视频| 中文.日本.精品| 国产日韩欧美综合| 久久久国产精品免费| 色综合影院在线| 91国产视频在线| 91视频8mav| 欧美日韩国产一区二区| 国产97人人超碰caoprom| 日韩黄色高清视频| 中日韩午夜理伦电影免费| 亚洲一区二区三区四区视频| 美女福利视频一区| 欧美激情女人20p| 在线性视频日韩欧美| 成人黄色av网| 欧美在线激情网| 在线视频欧美日韩精品| 亚洲欧洲免费视频| 日韩中文字幕在线播放| 在线精品91av| 亚洲高清一区二| 国产一区二区丝袜高跟鞋图片| 日韩av影视综合网| 在线观看不卡av| 九色精品美女在线| 日本一区二区三区在线播放| 九色精品美女在线| 精品久久香蕉国产线看观看亚洲| 国产亚洲精品美女久久久久| 成人精品视频在线| 91网站在线免费观看| 久久99久久99精品免观看粉嫩| 国产精品亚发布| 亚洲国产精品99| 欧美成人一区二区三区电影| 日本伊人精品一区二区三区介绍| 最近中文字幕2019免费| 成人久久精品视频| 国产网站欧美日韩免费精品在线观看| 国产ts一区二区| 欧美电影免费观看高清完整| 在线性视频日韩欧美| 欧美亚洲日本网站| 欧美洲成人男女午夜视频| 久久精品国产一区二区三区| 国产精品三级久久久久久电影| 国产精品久久久久久久7电影| 国产精品第10页| 俺去亚洲欧洲欧美日韩| 性色av一区二区咪爱| 91精品久久久久久久久久久久久久| 欧美色图在线视频| 久久亚洲私人国产精品va| 日韩经典中文字幕在线观看| 久久久久久久久久久久av| 日韩欧美一区二区在线| 欧美激情视频在线免费观看 欧美视频免费一| 日韩人体视频一二区| 亚洲最大成人在线| 亚洲欧美日韩爽爽影院| 伊人久久综合97精品| 精品中文字幕乱| 国产亚洲视频中文字幕视频| 欧美极品少妇xxxxⅹ喷水| 久久久999国产| 久久天天躁狠狠躁夜夜爽蜜月| 91精品久久久久久久久久另类| 欧美一区二区三区四区在线| 色悠悠久久久久| 亚洲欧美制服第一页| 精品久久久久久久久久久| 国产在线视频2019最新视频| 国产精品免费久久久| 精品亚洲男同gayvideo网站| 欧美日韩色婷婷| 欧美激情三级免费| 亚洲变态欧美另类捆绑| 91网站在线看| 亚洲欧美日韩中文在线| 亚洲乱码av中文一区二区| 国产亚洲欧洲高清| 久久理论片午夜琪琪电影网| 性欧美长视频免费观看不卡| 在线视频国产日韩| 欧美亚洲激情在线| 欧美性xxxx极品高清hd直播| 久久99国产精品久久久久久久久| yellow中文字幕久久| 国产日韩欧美视频| 中文字幕在线国产精品| 亚洲一区二区久久久| 亚洲天堂开心观看| 91久久久久久久一区二区| 国产69精品久久久| 日韩av快播网址| 欧美日韩国产中文字幕| 欧美大秀在线观看| 久久久精品美女| 在线a欧美视频| 亚洲精品久久视频| 国产精品网红福利| 日韩毛片在线看| 91影视免费在线观看| 久久久女女女女999久久| 亚洲男人av电影| 欧美在线观看日本一区| 国产欧洲精品视频| 中文字幕最新精品| 日韩专区在线观看| 欧美在线xxx| 日韩激情视频在线| 中文字幕在线精品| 韩国三级日本三级少妇99| 日韩av毛片网| 91精品国产乱码久久久久久蜜臀| 成人激情春色网| 日韩成人高清在线| 66m—66摸成人免费视频| 亚洲人成网站在线播| 亚洲视频在线观看网站| 中文字幕在线观看亚洲| 欧美在线性爱视频| 亚洲人成伊人成综合网久久久| 国产激情久久久久| 8x拔播拔播x8国产精品| 色综合91久久精品中文字幕| 午夜精品理论片| 日韩综合中文字幕| 国产精品主播视频| 亚洲午夜久久久影院| 久久精品电影网站| 亚洲天堂日韩电影| 久热精品视频在线| 欧美成人亚洲成人日韩成人| 久久免费精品日本久久中文字幕| 亚洲国语精品自产拍在线观看| 亚洲一区二区久久久久久| 色琪琪综合男人的天堂aⅴ视频| 欧美性猛交xxxx乱大交蜜桃| 中文字幕日韩av综合精品| 国产欧美精品日韩| 欧美日韩亚洲国产一区| 国产精品中文久久久久久久| 亚洲精品视频免费在线观看| 亚洲男人的天堂在线播放| 2019亚洲男人天堂| 欧美一级电影免费在线观看| 欧美孕妇与黑人孕交| 国产91免费看片| 日韩精品在线观看网站| 欧美视频免费在线观看| 亚洲免费中文字幕| 亚洲欧美国产日韩天堂区| 精品国产自在精品国产浪潮| 日韩一区二区三区在线播放| 中文字幕一区电影|