老师,insert不应该返回Node吗?为什么返回的是Node*呢?
来源:5-3 二分搜索树的节点插入
慕仔2270865
2021-11-25
写回答
1回答
-
liuyubobobo
2021-11-26
node 是变量名称。node 的类型是 Node*,请看 node 在参数列表中的类型声明,是 Node*。
为什么返回 Node*?因为我们要返回的是指向 Node 的指针,即 Node*。看上面的代码,node->left 和 node->right 的类型都是指向 Node 的指针,即 Node*,而非一个 Node。所以我们可以写 node->left = insert(..),node->right = insert(...);new Node(...) 返回的也是一个指向 Node 的指针,即 Node*。如果返回的是 Node,将在递归的过程中,一次一次的重新创建整个 Node。而返回 Node*,只是改变变量的指向。
如果你是 Java 程序员,要注意,Java 和 C++ 不一样。对于 Java 来说,一切类对象,本质都是 C++ 中的指针,在 Java 中叫引用。所以,在 Java 语言中,直接写返回 Node 类型,意思就是返回指针。但是 C++ 不是这样的。我不确定你是不是因为这个原因混淆了这一点。
继续加油!:)
00
相似问题