当前位置: 首页 > news >正文

en造数据结构与算法C# 二叉排序树 泛型类的基本构成

前置知识:二叉树 

en造数据结构与算法C# 二叉树的顺序存储和前中后序遍历-CSDN博客 

二叉排序树基本规则

二叉排序树的特点就是有序,其基本规则分为两个点

1.按照顺序去存储节点(下图绿色的顺序)

2.其次,在第一点的基础上,比当前节点小的值放在左子节点,比当前节点大的值放在右子节点

也就是下图这样子

代码实现分析

首先是不是应该有一个节点类,作为链式存储的必要条件

在节点类之中可以有三个基本字段

本体值 =>数字 Eg:50,86,36......

左子节点和右子节点:

这里我采用泛型的方式,这样做的好处是可以方便多类型存储

缺点是后续要比较本体值的时候,需要继承一个接口才能比较其大小

(泛型类型不能直接进行比较,需要用一些方法,比如Equels或者这里的Icomparable接口的方法)

where T : IComparable<T> 
namespace System {public interface IComparable<in T> {int CompareTo(T other);}
}

你可以将T改为int类型

// 节点类
public class Node<T> where T : IComparable<T> {// 包括了左右子节点和一个数据本体,和一个构造方法public T data;public Node<T> LeftNode;public Node<T> RightNode;public Node(T data) {this.data = data;LeftNode = null;RightNode = null;}
}

为什么不能用顺序存储呢?

因为需要存入的时候就要进行一个排序,顺序存储就一股脑存进去了,虽然可以后续通过中序遍历的方式进行重新排序,但是,这样做后续的增删查改会很不方便,且这样做增大了空间复杂度

然后就是二叉排序树的本体类

其基本的字段只需要有一个即可,就是定义一个根节点

public class BinarySortTree<T> where T : IComparable<T> {public Node<T> root; // 定义根节点}

这就是基本组成,增删查改我们后续细细分析

 


http://www.mrgr.cn/news/37172.html

相关文章:

  • Hadoop FileSystem Shell 常用操作命令
  • 华为OD机试真题------猜数字
  • 线性判别分析 (LDA)中目标函数变换中”令$S_b w = \lambda(\mu_0 - \mu_1)$“,为什么可以这么写
  • WPF入门教学二十 3D图形与视觉效果
  • 【C语言】函数
  • 通信工程学习:什么是TDD时分双工
  • UE5: Content browser工具编写
  • Superset二次开发之Git篇git fetch 异常信息汇总
  • 【C语言】手把手带你拿捏指针(完)(指针笔试、面试题解析)
  • 【AndroidStudio】关于AndroidStudio的常见控件TextView和Button
  • L5打卡学习笔记
  • Oracle RMAN 无敌备份脚本
  • 【C++篇】深度剖析C++ STL:玩转 list 容器,解锁高效编程的秘密武器
  • Teams集成-会议侧边栏应用开发-会议转写
  • 深入理解指针(4)
  • 高校竞赛管理系统的设计与实现
  • 【Linux学习】【Ubuntu入门】2-1-1 vim编辑器设置
  • 面试速通宝典——4
  • 智能守护者X100 - 自动化生产线智能机器人安全监控管理系统
  • 华为OD机试真题------分糖果