当前位置: 首页 > 知识库问答 >
问题:

在C++中用preorder构造树

洪建茗
2023-03-14
void HCTree::buildFromHeader(ifstream& in, HCNode* n, int codeToUse) {

   if( bitsToRead > 0) {
      char c = in.get();
      bitsToRead--;
      if(c == '0') {
         n = new HCNode(0, 0, 0, 0, 0, codeToUse);
         if(rootSet == 0) {
            root = n;
            rootSet = true;
         }
         HCNode* left;
         n->c0 = left;
         HCNode* right;
         n->c1 = right;
         buildFromHeader(in, left, 0);
         buildFromHeader(in, right, 1);
      }
      else { 
         byte symbol = in.get();
         n = new HCNode(0, symbol, 0, 0, 0, codeToUse);
         bitsToRead--;
         n->c0 = n->c1 = NULL;
      }
   }
}

共有1个答案

鲁阳焱
2023-03-14

似乎在变化

void HCTree::buildFromHeader(ifstream& in, HCNode* n, int codeToUse) {

void HCTree::buildFromHeader(ifstream& in, HCNode* &n, int codeToUse) {

会做这项工作。

buildFromHeader(in, root, codeToUse)
HCNode* left;
n->c0 = left;
HCNode* right;
n->c1 = right;
buildFromHeader(in, left, 0);
buildFromHeader(in, right, 1);
buildFromHeader(in, n->c0, 0);
buildFromHeader(in, n->c1, 0);
 类似资料:
  • 主要内容:1、实例构造函数,2、静态构造函数,3、私有构造函数在 C# 中,构造函数就是与类(或结构体)具有相同名称的成员函数,它在类中的地位比较特殊,不需要我们主动调用,当创建一个类的对象时会自动调用类中的构造函数。在程序开发的过程中,我们通常使用类中的构造函数来初始化类中的成员属性。 C# 中的构造函数有三种: 实例构造函数; 静态构造函数; 私有构造函数。 1、实例构造函数 构造函数是类中特殊的成员函数,它的名称与它所在类的名称相同,并且没有返回值。当

  • 主要内容:构造函数的重载,默认构造函数在 C++中,有一种特殊的成员函数,它的名字和类名相同,没有返回值,不需要用户显式调用(用户也不能调用),而是在创建对象时自动执行。这种特殊的成员函数就是 构造函数(Constructor)。 在《 C++类成员的访问权限以及类的封装》一节中,我们通过成员函数 setname()、setage()、setscore() 分别为成员变量 name、age、score 赋值,这样做虽然有效,但显得有点

  • 本文向大家介绍C++中构造函数重载,包括了C++中构造函数重载的使用技巧和注意事项,需要的朋友参考一下   当类中没有定义构造函数时,C++编译器自动提供无参构造函数和拷贝构造函数   当类中定义了任意的拷贝构造函数,C++不提供无参构造函数。 系统自动提供的构造函数   无参构造函数      函数体为空   拷贝构造函数      简单的进行成员变量的值复制      Test t1;    

  • 我正在研究PostSharp中的各种概念。 更新日期: 这是我的程序课作为 我的aspect类为 1)一些跟踪方面类: 2)TraceAscape Provider类: 使用系统;使用系统。集合。通用;使用系统。Linq;使用系统。文本;使用PostSharp。方面;使用系统。反思; 命名空间MyProviders{公共类TraceAspectProvider:IAspectProvider{只读

  • 本文向大家介绍C ++中的构造方法重载,包括了C ++中的构造方法重载的使用技巧和注意事项,需要的朋友参考一下 众所周知,函数重载是面向对象语言的核心功能之一。我们可以使用相同的功能名称;其参数集不同。在这里,我们将看到如何重载C ++类的构造函数。构造函数重载有几个重要概念。 重载的构造函数必须具有相同的名称和不同数量的参数 根据传递的参数的数量和类型来调用构造函数。 我们在创建对象时必须传递参

  • 本文向大家介绍C#中的构造方法重载,包括了C#中的构造方法重载的使用技巧和注意事项,需要的朋友参考一下 如果在同一个类中定义了多个具有相同名称的构造函数,则如果每个构造函数的参数不同,则将它们称为重载。 让我们看一个示例,以学习如何在C#中使用构造函数重载。 在示例中,我们有两个主题和一个“学生姓名”的字符串声明。 我们正在显示三个不同学科的学生的成绩。在我们的示例中,为显示构造函数重载,仅为学生

  • 主要内容:默认拷贝构造函数拷贝和复制是一个意思,对应的英文单词都是 。 对于计算机来说,拷贝是指用一份原有的、已经存在的数据创建出一份新的数据,最终的结果是多了一份相同的数据。例如,将 Word 文档拷贝到U盘去复印店打印,将 D 盘的图片拷贝到桌面以方便浏览,将重要的文件上传到百度网盘以防止丢失等,都是「创建一份新数据」的意思。 在 C++ 中,拷贝并没有脱离它本来的含义,只是将这个含义进行了“特化”,是指用已经存在的对

  • 主要内容:转换构造函数,再谈构造函数,对 Complex 类的进一步精简在 C/ C++ 中,不同的数据类型之间可以相互转换。无需用户指明如何转换的称为自动类型转换(隐式类型转换),需要用户显式地指明如何转换的称为强制类型转换。 自动类型转换示例: 编译器对 7.5 是作为 double 类型处理的,在求解表达式时,先将 a 转换为 double 类型,然后与 7.5 相加,得到和为 13.5。在向整型变量 a 赋值时,将 13.5 转换为整数 13,然后赋给 a。整