首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >二叉树成员函数

二叉树成员函数
EN

Stack Overflow用户
提问于 2013-03-30 11:39:40
回答 1查看 903关注 0票数 1

我在编写代码以确定树中是否存在某些数据时遇到了问题,这是BinaryTreeNode类

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class BinaryTreeNode {
  public:
    Data * nodeData;
    BinaryTreeNode * left;
    BinaryTreeNode * right;

我需要完成的函数是(不能更改这个定义)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
bool BinaryTreeNode::member(Data * data) const {

我尝试创建一个变量,如currentnode = this,并使用while循环检查树的哪一侧向下移动,然后更新当前节点,但我似乎无法做到这一点。所以我在想,也许应该用递归来完成?我试过了,但是程序被锁住了。

如果有人能给我指明正确的方向,那将是非常有帮助的。

下面是我多次尝试(这次尝试递归)中的一个:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
bool BinaryTreeNode::member(Data * data) const {
    if(nodeData == NULL) {
        return false;
    }
    else if (nodeData->compareTo(data) == 0) {
        return true;
    }
    while(this != NULL) {
        if(nodeData->compareTo(data) == 0) {
            return true;
        }
        else if(nodeData->compareTo(data) == 1) {
            return left->member(data);
        }
        else if(nodeData->compareTo(data) == -1) {
            return right->member(data);
        }
    }

    return false;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-30 11:55:48

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
while(this != NULL)

在对该函数的第一次调用中,this永远不会更改为NULL

--您可以直接删除这一行。,只需检查两个分支中的NULL

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    if(left && nodeData->compareTo(data) == 1) {
        return left->member(data);
    }
    if(right && nodeData->compareTo(data) == -1) {
        return right->member(data);
    }

一旦递归地检查了左右树,就完成了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15722708

复制
相关文章
【C++】静态成员函数 ( 静态成员函数概念 | 静态成员函数声明 | 静态成员函数访问 | 静态成员函数只能访问静态成员 )
静态成员函数归属 : 在 C++ 类中 , 静态成员函数 是一种 特殊的函数 , 该函数属于类 , 而不是属于 类实例对象 ;
韩曙亮
2023/10/15
1.5K0
【C++】静态成员函数 ( 静态成员函数概念 | 静态成员函数声明 | 静态成员函数访问 | 静态成员函数只能访问静态成员 )
成员函数
输入n个学生的信息,每个学生的信息包括姓名、身高、学号。变成输出身高最高的学生信息。
全栈程序员站长
2022/09/07
5800
C++类的成员函数 | 成员函数
在C++中,类的成员函数是函数的一种,它有返回值和函数类型,它与一般函数的区别只是:
小林C语言
2021/01/18
1.9K0
C++类的成员函数 | 成员函数
静态成员函数和非静态成员函数的区别?
一个静态成员函数不与任何对象相联系,故不能对非静态成员进行默认访问。 它们的根本区别在于静态成员函数没有this指针,而非静态成员函数有一个指向当前对象的指针this。 例如: 1 class Sc 2 { 3 public: 4 void nsfn(int a); //像声明Sc::nsfn(Sc *this , int a); 5 static void sfn(int a); // 无this指针 6 //.... 7 }; 8 9 void f(Sc
猿人谷
2018/01/17
1.9K0
C++ 静态数据成员与静态成员函数
本文介绍了静态数据成员和静态成员函数的概念、特点以及用法,并给出了一个示例代码。静态数据成员和静态成员函数是C++中比较重要的概念,在开发中经常用到。
chaibubble
2018/01/02
1.5K0
静态成员函数访问非静态数据成员【C++】
详解:由于静态数据成员属于本类的所有对象共享,不属于特定类对象,因此在未产生类对象时作用域就可见,即:在未产生类的实例时,就可以对它进行操作。
攻城狮杰森
2022/06/03
1.3K0
Python 检测成员函数、成员变量是否存在的方法
AttributeError: A instance has no attribute 'fun2'
用户9127725
2022/08/08
2.8K0
C++静态成员变量和静态成员函数小结
静态类成员包括静态数据成员和静态函数成员两部分。 一 静态数据成员: 类体中的数据成员的声明前加上static关键字,该数据成员就成为了该类的静态数据成员。和其他数据成员一样,静态数据成员也遵守public/protected/private访问规则。同时,静态数据成员还具有以下特点: 1.静态数据成员的定义。 静态数据成员实际上是类域中的全局变量。所以,静态数据成员需要在类外定义(初始化),而不应该被放在类声明中。 原因是类声明中只是描述如果分配内存并不会真正的分配内存,而定义是一定要分配
用户1215536
2018/02/05
1.9K0
C++中的const成员变量和成员函数
在类中,如果你不希望某些数据被修改,可以使用const关键字加以限定。const 可以用来修饰成员变量和成员函数。
芯动大师
2023/10/14
3120
C++中的const成员变量和成员函数
C++类的静态数据成员和静态成员函数
一些类对象可能会具有一些相同的属性,如果用普通数据成员来描述这些相同的属性,这意味着我们需要给每个对象的这个数据成员设定相同的值,如果改变类对象相同的属性,那么意味着我们需要对它们统一操作,这就有可能出现它们的值会不一样的情况,如果用全局变量来描述它们相同的属性,就会破坏类的独立性。
叶茂林
2023/07/30
1930
C++之const成员函数
由于const函数的隐藏参数this指针变成了const 类名*this,所以const函数不能修改类的数据成员的值,但可以使用类的数据成员。
zy010101
2020/04/08
9270
STL之string类成员函数
3
用户9831583
2022/06/16
1K0
STL之string类成员函数
C++inline | inline成员函数
C++类的成员函数可以指定为内置函数,在类体中定义的成员函数的规模一般都很小,而系统调用函数的过程所花费的时间开销相对是比较大的。
小林C语言
2021/01/19
1K0
C++:30 ---C++类成员,成员函数的内存布局
这里要指出的是大家可以看到静态成员函数和静态成员变量sx的地址都是0x00007FF开头的,实际上他们都在全局数据区域存储(全局变量,静态变量),如果你有耐心,可以断点查看下栈空间内的局部变量i的地址:
用户3479834
2021/02/03
1.3K0
C++:30 ---C++类成员,成员函数的内存布局
C++类声明和成员函数定义 | 引用多个成员对象
在C++中,一般做法是将类的声明放在指定的头文件中,程序员如果想用该类,只要把有关的头文件包含进来即可,不必在程序中重复书写类的声明,以减少工 作量,提高编程的效率。
小林C语言
2021/01/25
1.9K0
C++类声明和成员函数定义 | 引用多个成员对象
运算符成员函数与友元函数重载
我们介绍了运算符重载的目的和一个简单的应用案例。但运算符重载绝非我们想想的那么简单和容易,有很多陷阱我们如果我们还没有去踩过,是不会了解清楚内部的工作原理的。本文只介绍一下运算符重载的两种方式,成员函数重载和友元函数重载,并不具体到某些运算符的具体案例。
我与梦想有个约会
2023/10/20
2470
[Go] golang结构体成员与函数类型
package main import ( "fmt" ) //定义一个类型 type tsh struct { //定义成员,类型是func() string test func() string } //定义一个函数,获取tsh类型 func New(fn func() string) *tsh { return &tsh{ test: fn, } } func cre() string { return fmt.Sprintf("%s,来了", "tsh") } func ma
唯一Chat
2019/09/10
1.9K0
c++之const修饰成员函数
常函数: 成员函数后加const后我们称这个函数为常函数; 常函数不可以修改成员属性 成员属性声明时加关键字mutable后,在常函数中依然可以修改 常对象: 声明对象前加const 常对象只能调用常函数 常函数: #include<iostream> using namespace std; class Person { public: int age; mutable int tmp;//用mutable修饰的为特殊变量,可以在常量函数中修改 void showPerson()
西西嘛呦
2020/08/26
6540
static修饰的成员变量及函数
static成员变量又称为静态成员变量,在多个对象间共享使用,并且static静态变量在初始化时必须在类外初始化,可以直接通过“类名::变量”访问,哪怕是还没有生成对象时一样可以访问,以此看来static成员变量不隶属于某个对象,而隶属于类,只是所有该类的对象都可以使用而已。
我与梦想有个约会
2023/10/20
1710
static修饰的成员变量及函数
静态成员和函数的初步运用
商店销售某一商品,每天公布统一的折扣(discount)。同时允许销售人员在销售时灵活掌握售价(price),在此基础上,一次购10件以上者,还可以享受9.8折优惠。现已知当天m个销货员销售情况为
布衣者
2021/09/07
5860

相似问题

测试二叉树的成员

21

成员函数指针到成员函数

11

使用异步添加二叉树成员失败

31

在成员函数内调用成员函数

223

成员函数还是非成员函数?

60
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文