You need to enable JavaScript to run this app. C++ BST类中node* makeEmpty(node* t)函数语法含义问询
优惠活动
大模型
产品
解决方案
定价
更多

C++ BST类中node* makeEmpty(node* t)函数语法含义问询

语法拆解

你熟悉的通用函数定义规则完全适用于这个函数,它没有特殊语法,只是返回值和参数类型用了自定义的结构体指针而已:

return_type  function_name( parameter )
    ↓           ↓          ↓
  node*      makeEmpty   (node* t)
  • node是你已经了解的、定义在BST类内部的自定义结构体类型,node*就是指向node类型实例的指针,和你写int*、char*没有本质区别,完全可以作为函数的返回值类型、参数类型使用。
  • 这个函数的作用是递归释放传入的节点t,以及t的所有左子树、右子树节点,最后返回空指针NULL。

返回node*而非void的设计原因

如果把这个函数定义成void makeEmpty(node* t),会遇到参数值传递的问题:函数内部拿到的t只是外部传入指针的拷贝,就算你在函数结尾把t赋值为NULL,也改不了外部的原始指针,很容易产生野指针。
而用返回node*的设计,清空树的时候可以直接写:

root = makeEmpty(root);

释放完所有节点的同时直接把根指针root置为NULL,避免野指针问题,写法也更简洁。

内容的提问来源于stack exchange,提问作者Jeffrey Stewart

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 00:06:03