老师,关于二叉搜索树实现的问题

来源:5-2 二分搜索树基础 (Binary Search Tree)

相信光变成光

2020-12-03

老师,你在课堂上left,right,root用的是指针变量,于是我就把指针去掉,看看能行不?当我在main函数实例化BST类对象时,left那里就报错了。我不理解去掉指针为啥不行?我感觉和Java中的引用弄混了。

http://img.mukewang.com/szimg/5fc83e4609436b4710050822.jpg

http://img.mukewang.com/szimg/5fc83e700998617307830345.jpg

写回答

1回答

liuyubobobo

2020-12-03

简单的说,Java 中的引用,就是 C++ 的指针。


当 left 和 right 都是指针的时候,他们默认可以指向 NULL;


但是,如果 left 和 right 不是指针,那么就不能是空,就需要把 left 和 right 这个 Node 构建出来。但是你的逻辑里没有指明如何构建他们,就报错了。


继续加油!:)

0
2
liuyubobobo
回复
相信光变成光
因为这个类是模板类,我们不能保证 key 或者 value 有默认值。所以无论怎么写都无法保证构建正确。另一方面,在 Node 中构建 Node,也会形成这个构建过程的无穷递归。所以应该使用指针,这就是指针要解决的问题之一。正因为有这样或者那样的问题,所以在 Java 中,对于非基本类型,根本不提供这种默认直接构建出一个类对象的方式,Java 中所有的类对象变量都是引用(就是指针)。
2020-12-03
共2条回复

算法与数据结构(C++版) 面试/评级的算法复习技能包

课程专为:短时间内应对面试、升职测评等艰巨任务打造

11187 学习 · 1614 问题

查看课程