欢迎光临112期刊网!
网站首页 > 论文范文 > 计算机论文 > 计算机应用 > 基于C#的二叉排序树图形显示系统研究与实现

基于C#的二叉排序树图形显示系统研究与实现

日期:2023-01-24 阅读量:0 所属栏目:计算机应用


摘 要:本文首先介绍了二叉树在数据结构中的应用,并结合C#语言实现了二叉树的可视化功能。文章对二叉树的构建和输出实现进行了说明,同时对数据结构的教学方法进行了讨论。

关键词:二叉树;图形显示;遍历
  1、背景介绍
  二叉树是树形结构的一个重要类型。许多实际问题抽象出来的数据结构往往是二叉树的形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要。
  二叉排序树(Binary Sort Tree)又称二叉查找(搜索)树(Binary Search Tree)。其定义为:二叉排序树或者是空树,或者是满足如下性质的二叉树:
  ①若它的左子树非空,则左子树上所有结点的值均小于根结点的值;
  ②若它的右子树非空,则右子树上所有结点的值均大于根结点的值;
  ③左、右子树本身又各是一棵二叉排序树。
  上述性质简称二叉排序树性质(BST性质),故二叉排序树实际上是满足BST性质的二叉树。
  二叉排序树在实际应用中,经常用来实现提高数据的查寻效率,但由于概念理解上的困难,在教学过程中,学生往往不能掌握二叉树的基本操作,不能在脑海中形成对应的模型。所以本文试图从概念入手,用可视化的方法来对数据结构中二叉树的教学进行改进。
  2、实现工具
  C#是一种先进的面向对象的程序开发语言,通过C#可以让开发人员快速的建立大范围的基于MS网络平台的应用,并且提供大量的开发工具和服务帮助开发人员开发基于计算和通信的各种应用。基于这个特点,我们采用C#来开发二叉排序树图形显示系统。
  3、具体设计
  界面设计,除了基本的二叉排序树显示功能以外,还可对二叉排序树中的节点进行增加和删除。
  4、实现
  实现二叉树的显示,主要要进行这样几个操作,首先是初始化二叉树,对初始的输入序列依次进行增加节点操作,在增加节点时先要找到节点要插入的位置,然后在窗口上显示出这个结点,直到所有输入序列都插入到二叉树中为止,这些操作都是递归进行的。
  4.1插入位置查找 
   private bool Search(TreeNode node, int data)
          {
              if ( == data)
              {
                  found = true;
              }
              else
              {
                  if ( > data)  ///条件成立则查左子树,否则查右子树。
                  {
                      if (de != null)
                      {
                          Search(de, data);
                      }
                  }
                  else
                  {
                      if (ode != null)
                      {
                          Search(ode, data);
                      }
                  }
              }
              return found;
          }
  4.2插入操作
      private void Insert(TreeNode node, int data)
          {
              if ( > data)
              {
                  if (de == null)
                  {
                      TreeNode temp = new TreeNode();
                      = data;
                      de = temp;
                  }
                  else
                  {
                      Insert(de, data);
                  }
              }
              else
              {
                  if (ode == null)
                  {
                      TreeNode temp = new TreeNode();
                      = data;
                      ode = temp;
                  }
                  else
                  {
                      Insert(ode, data);
                  }
              }
          }
  4.3显示模块
  private void Draw(TreeNode parent, Point cur, Point last, int deep)
          {
              if (parent == null)
              {
                  return;
              }
              /* 画圆圈*/
              Size size = new Size(nodeRadius*2, nodeRadius*2);
              Point center = new Point();
              center.X = cur.X - nodeRadius;
              center.Y = cur.Y - nodeRadius;
              Rectangle rec = new Rectangle(center, size);
              lipse(cirBrush, rec);
              /* 画线*/
              ne(myPen, cur, last);
              /* 绘制左右子树*/
              Point left = new Point();
              int len = (int)(2.0, (double)deep);
              left.X = cur.X - (nodeRadius + distanceWidth) * len;
              left.Y = cur.Y + distanceHeight;
              Draw(de, left, cur, deep-1);
              Point right = new Point();
              right.X = cur.X + (nodeRadius + distanceWidth) * len;
              right.Y = cur.Y + distanceHeight;
              Draw(ode, right, cur, deep-1);
              /* 写字*/
              center.X = cur.X - nodeRadius * 9 / 10;
              center.Y = cur.Y - nodeRadius * 9 / 10;
              ring(ng(), myFont, fontBrush, center);
          }
  5、结论
  通过使用二叉排序树图形显示系统,在教学中能够使学生对二叉排序树的概念和基本操作有良好的认识,对掌握二叉树这一数据结构中的重要概念有很好的帮助作用。当然这个系统还有很多需要完善的地方,比如平衡的二叉排序树的显示实现,还有遍历的过程显示等,将在今后进行不断的完善。  
参考文献
  [1] 顺序存储的满二叉树中序遍历的非递归算法 吴福英 谭罗生 王明文  江西师范大学学报(自然科学版)2003, 27(4)
  [2] 基于满二叉树的原地快速排序 范时平 重庆邮电学院学报(自然科学版)2006, 18(6)
  [3] 二叉树的绘制算法 周志华 计算机应用研究 1997,4
  [4] 浅谈《数据结构》课程教改 储美芳  成才之路 2010年第29期 本文链接:http://www.qk112.com/lwfw/jsjlw/jisuanjiyingyong/242846.html

论文中心更多

发表指导
期刊知识
职称指导
论文百科
写作指导
论文指导
论文格式 论文题目 论文开题 参考文献 论文致谢 论文前言
教育论文
美术教育 小学教育 学前教育 高等教育 职业教育 体育教育 英语教育 数学教育 初等教育 音乐教育 幼儿园教育 中教教育 教育理论 教育管理 中等教育 教育教学 成人教育 艺术教育 影视教育 特殊教育 心理学教育 师范教育 语文教育 研究生论文 化学教育 图书馆论文 文教资料 其他教育
医学论文
医学护理 医学检验 药学论文 畜牧兽医 中医学 临床医学 外科学 内科学 生物制药 基础医学 预防卫生 肿瘤论文 儿科学论文 妇产科 遗传学 其他医学
经济论文
国际贸易 市场营销 财政金融 农业经济 工业经济 财务审计 产业经济 交通运输 房地产经济 微观经济学 政治经济学 宏观经济学 西方经济学 其他经济 发展战略论文 国际经济 行业经济 证券投资论文 保险经济论文
法学论文
民法 国际法 刑法 行政法 经济法 宪法 司法制度 法学理论 其他法学
计算机论文
计算机网络 软件技术 计算机应用 信息安全 信息管理 智能科技 应用电子技术 通讯论文
会计论文
预算会计 财务会计 成本会计 会计电算化 管理会计 国际会计 会计理论 会计控制 审计会计
文学论文
中国哲学 艺术理论 心理学 伦理学 新闻 美学 逻辑学 音乐舞蹈 喜剧表演 广告学 电视电影 哲学理论 世界哲学 文史论文 美术论文
管理论文
行政管理论文 工商管理论文 市场营销论文 企业管理论文 成本管理论文 人力资源论文 项目管理论文 旅游管理论文 电子商务管理论文 公共管理论文 质量管理论文 物流管理论文 经济管理论文 财务管理论文 管理学论文 秘书文秘 档案管理
社科论文
三农问题 环境保护 伦理道德 城镇建设 人口生育 资本主义 科技论文 社会论文 工程论文 环境科学