请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

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

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

https://img1.sycdn.imooc.com//szimg/5fc83e4609436b4710050822.jpg

https://img1.sycdn.imooc.com//szimg/5fc83e700998617307830345.jpg

正在回答 回答被采纳积分+3

1回答

liuyubobobo 2020-12-03 11:30:13

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


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


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


继续加油!:)

0 回复 有任何疑惑可以回复我~
  • 提问者 相信光变成光 #1
    老师,left和right该如何构建呢?
    回复 有任何疑惑可以回复我~ 2020-12-03 11:46:25
  • liuyubobobo 回复 提问者 相信光变成光 #2
    因为这个类是模板类,我们不能保证 key 或者 value 有默认值。所以无论怎么写都无法保证构建正确。另一方面,在 Node 中构建 Node,也会形成这个构建过程的无穷递归。所以应该使用指针,这就是指针要解决的问题之一。正因为有这样或者那样的问题,所以在 Java 中,对于非基本类型,根本不提供这种默认直接构建出一个类对象的方式,Java 中所有的类对象变量都是引用(就是指针)。
    回复 有任何疑惑可以回复我~ 2020-12-03 11:48:22
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信