`
yxsylyh
  • 浏览: 35116 次
  • 性别: Icon_minigender_1
  • 来自: 哈尔滨
社区版块
存档分类
最新评论

[问题]C#树类继承和树结点类继承的问题

    博客分类:
  • C#
阅读更多

[问题]C#树类继承和树结点类继承的问题

最近正用C#做一个树类。

首先实现树的结点类:

public class Node<T>
{
private T data;
private List<Node<T>> children;

// 属性和方法略
}

树类就可以实现了:

public class Tree<T>
{
private Node<T> root;

// 属性和方法略
}

然后把这个树类扩展成N叉树。

public class NBranchTree<T>
{
private int branchCount;

// 构造器
public NBranchTree(int nBranchCount)
{
branchCount=nBranchCount;
}

// 属性和方法略
}

然后就可以生成八叉树、四叉树和二叉树。

到二叉树的时候,问题就来了,二叉树通常都使用左孩子、右孩子来访问孩子结点,而如此构造的二叉树类只能用List的索引来访问,索引0表示左孩子,索引1表示右孩子,操作不太直观。但要把结点类扩展,添加左孩子和右孩子属性如下:

public class BiNode<T> : Node<T>
{
BiNode<T> lchild;
BiNode<T> rchild;

//其它略
}

又怎么把这个扩展的结点类应用到BranchCount=2的树类中呢?

希望各位指教。

分享到:
评论

相关推荐

    对C#的树型控件TREEVIEW添加背景图片

    1. **创建自定义TreeView控件**:首先,创建一个新的类,继承自System.Windows.Forms.TreeView。这样,我们可以在新类中添加自定义的功能。 ```csharp public class CustomTreeView : TreeView { // 在这里添加新...

    数据结构(c#版

    - C#语言的面向对象特性允许开发者自定义数据结构,通过继承和多态来创建更为复杂的结构,如自定义树节点类、图节点类等。 4. **排序与查找算法**: - 排序算法如冒泡排序、选择排序、插入排序、快速排序、归并...

    广工C#实验,实践C#语言基础知识及控制台应用程序开发,

    (3) 掌握Visual C#.NET类的创建(成员,方法,属性),类的继承,类的多态性及类的方法的重载。 1.3 实验内容 题目: 基于控制台应用程序,设计一个二叉树的实验工具,要求可以支持以下功能: (1) 利用随机函数,...

    数据结构(C#语言版)

    继承允许一个类(派生类)继承另一个类(基类)的属性和方法,这有助于代码重用和模块化。嵌套类则允许在一个类的内部定义另一个类,便于管理和封装相关的类。 - **1.3.5 C#的抽象类、密封类和接口** 抽象类无法...

    C#.数据结构(C#语言版)

    - **面向对象特性**: C#是一种完全面向对象的语言,这意味着它支持封装、继承和多态等面向对象编程(OOP)的核心特性。 - **简洁性**: C#的设计注重简洁性和易读性,有助于开发者更高效地编写代码。 - **高效性**: C#...

    C#中的多选TreeView控件

    - 为了更好地封装多选逻辑,可以创建一个自定义的`TreeView`控件类,继承自`System.Windows.Forms.TreeView`,然后添加额外的方法和属性,如`GetSelectedNodes()`返回选中节点的集合,`SetAllNodesUnselected()`...

    app.config自定义结点

    总结来说,自定义`app.config`结点是C#开发中提升应用程序可配置性的一个重要手段,通过合理设计和使用自定义配置节,开发者可以更便捷地管理应用程序的行为和设置,同时确保代码的可读性和可维护性。

    数据结构(C#语言版)

    - **面向对象编程**:C#是一种面向对象的语言,支持封装、继承和多态等特性。在实现数据结构时,可以通过类和对象的概念来定义各种数据结构。 - **泛型编程**:C#支持泛型,可以在编写数据结构时使用泛型来提高代码...

    treeview节点选中后添加背景色

    在这个类中定义你需要的背景色和其他样式。 - 使用JavaScript动态地添加或删除这个类,以实现节点的高亮效果。 3. **JavaScript实现**: - 在JavaScript中,你可以使用`addEventListener`方法为每个节点添加事件...

    绘制资源分配图

    - 资源分配图中的“进程结点”和“资源节点”可以通过`Graphics`类的`DrawRectangle`方法绘制矩形来表示。每个矩形可以代表一个进程或资源,通过设置不同的颜色和大小来区分。 - 可以使用`DrawString`方法在矩形内...

    2.线性表.ppt

    顺序表的C#实现可以定义一个名为SeqList的类,继承自IListDS接口,实现接口中定义的方法,如GetLength、Clear、IsEmpty、Add、Insert、Delete、GetElem等。同时,可以添加一个索引器以支持通过下标访问元素。 链表...

    吉威数源试题.doc

    继承允许一个类(子类)继承另一个类(父类)的属性和方法,实现代码复用。多态则是指同一消息可以被不同对象以不同方式响应的能力。 2. 算法的时间复杂度和空间复杂度:时间复杂度描述了算法执行所需时间与输入...

    2021-2022计算机二级等级考试试题及答案No.1662.docx

    8. 树的根结点数目:一棵树的根结点数目通常是1,这是树的基本定义。 9. 数据库类型区分:数据库的类型主要由其采用的数据模型决定,如关系型数据库、层次型数据库和网络型数据库等。 10. 数组元素数量:在VB.NET...

    2021-2022计算机二级等级考试试题及答案No.3828.docx

    - **知识点**:面向对象编程的主要特性包括封装、继承和多态(A)。 - **封装**:将数据和操作这些数据的方法绑定在一起,隐藏内部实现细节。 - **继承**:允许一个类继承另一个类的属性和方法。 - **多态**:...

    NOIP2008初赛普及组C++题目及答案.docx

    16. **面向对象编程**:面向对象编程(OOP)的核心特点是封装、继承和多态,C++、JAVA、C#等语言支持这些特性。自顶向下设计不是OOP特有的设计方法。 17. **汉字点阵字模**:32*32点阵的汉字字模占用的字节数等于...

    2021-2022计算机二级等级考试试题及答案No.15272.docx

    - **解析**:C#中的数据类型主要分为两大类:值类型和引用类型。值类型包括基本类型如整型、浮点型等,而引用类型包括类、数组等。 ### 数据库系统 #### 数据访问单位 - **正确选项**:B. `字段` - **解析**:在...

    NOIP2008年第十四届全国青少年信息学奥林匹克联赛初赛试题普及组C++.docx

    16. **面向对象程序设计**:面向对象编程(OOP)是一种设计方法论,强调对象的封装、继承和多态性。OOP通常采用自底向上的设计方法,而非自顶向下。C++、Java和C#都支持面向对象特性。 17. **汉字字模**:32*32点阵...

    腾讯2017校招开发工程师笔试试题(二).docx

    在32位环境下,给出了一段C++代码,其中包括两个类 `A` 和 `B`,其中 `B` 继承自 `A`。程序创建了 `B` 类型的数组,并在最后释放了这些对象所占用的内存。 **代码分析:** - **类 A** 定义了一个构造函数和一个析构...

    2021-2022计算机二级等级考试试题及答案No.2510.docx

    8. System类特性:Java中的System类是一个final类,不能被继承,也不能被实例化,因此不能创建System类的对象。 9. 字符判断:在C/C++或类似语言中,判断字符c是否为小写字母的正确表达式是D:`(c &gt;= 'a') && (c )`...

    2021-2022计算机二级等级考试试题及答案No.4712.docx

    13. **链表头结点**:在单链表中,头结点用于方便对链表进行操作,尤其是插入和删除操作。 14. **Java main方法**:Java application的主类中,main方法的形参通常是`String[] args`。 15. **HTML下拉菜单**:HTML...

Global site tag (gtag.js) - Google Analytics