• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > 浅谈二叉查找树的集合总结分析

浅谈二叉查找树的集合总结分析

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了浅谈行道树,浅谈,浅谈小学语文阅读教学,浅谈如何转化后进生,浅谈小学数学教学方法等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
我们都知道Dictionary<TKey, TValue>查找元素非常快,其实现原理是:将你TKey的值散列到数组的指定位置,将TValue的值存入对应的位置,
由于取和存用的是同一个算法,所以就很容易定位到TValue的位置,花费的时间基本上就是实现散列算法的时间,跟其中元素的个数没有关系,故取值的时间复杂度为O(1)。
集合无非都是基于最基础语法的数组[],先欲分配,然后向其中添加元素,容量不够就创建一个2倍容量的数组,将之前的元素赋值过来,将之前的数组回收,
但基于散列算法的集合这点上有点不同,他并不是每次创建一个2倍容量的数组,为了让元素均匀的分布到数组上,数组的容量是这么增长的:3,7,11,17,23,29,37,47,59,71,89,107,131,163,197,239,293,353,431,521,631,761,919,1103...
以质数的方式增长。由于每次扩充数组的容量较小,如果要向其中添加很多元素的话,程序员又没有预先分配内存,那就会出现多次数组的创建、复制和回收。
一直想做个有用的东西出来,让想用的人用,又能让自己练练手,于是这次做了一个基于二叉查找树的集合,我们知道在二叉查找树中查询元素的最优时间复杂度是O(logN)即在满二叉树的情况下,最坏时间复杂度是O(n)即除叶子节点外每个节点只有一个子节点,
查找元素它也是很快的哦,而且查找的时候都只是做Int型的比较,而Dictionary<TKey, TValue>是基于一个散列算法,当然基于二插查找树的集合也有自身的缺点:
1:元素必须实现接口IBinaryTree,其属性CompareValue主要用于比较生成二叉查找树
2:元素必须是可以new的,即不支持基础类型int,char,string等
3:每个节点都有左右两个子节点,他们只是起到指针的作用,指向该节点的子节点,只需占用额外的少量内存
4:基本上都是基于递归实现,元素过多的话,会栈溢出
优点是常用的一些功能都有,功能如下,练手吗,但会一直优化下去
      &nbs
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 浅谈二叉查找树的集合总结分析

相关文章

  • 2017-05-28C#小知识之有趣的类型静态构造器
  • 2017-05-28C#向word文档插入新段落及隐藏段落的方法
  • 2017-05-28用C#写的ADSL拨号程序的代码示例
  • 2017-05-28c#获取光标在屏幕中位置的简单实例
  • 2017-05-28使用C#开发ActiveX控件
  • 2017-05-28泛型编程去掉字段重复数据的方法
  • 2017-05-28C#利用GDI+绘制旋转文字等效果实例
  • 2017-05-28c#操作sql server2008 的界面实例代码
  • 2017-05-28c#使用windows服务更新站点地图的详细示例
  • 2017-05-28C#中Predicate<T>与Func<T, bool>泛型委托的用法实例

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C#实现判断字符串中是否包含中文的方法
    • C#对文件/文件夹操作代码汇总
    • 互斥量mutex的简单使用(实例讲解)
    • C# 设计模式系列教程-命令模式
    • C#数据结构与算法揭秘五 栈和队列
    • 从C#程序中调用非受管DLLs的方法
    • 在Linux上运行C#的方法
    • 浅谈C#各种数组直接的数据复制/转换
    • C#全角半角转换函数代码分享
    • c#删除指定文件夹中今天之前的文件

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有