c - 如何摆脱递归?C 编程
问题描述
我有一个三叉树,每个节点都有 id 和 name 当 root->id=id 时如何返回 true 并中断递归
BOOLEAN isIdUsed(Trin_Ari *root,int idNumber) {
if (root==NULL)
return FALSE;
if (root->id==idNumber)
return TRUE;
isIdUsed(root->left,idNumber);
isIdUsed(root->middle,idNumber);
isIdUsed(root->right,idNumber);
return FALSE;
}
解决方案
您忽略了对isIdUsed
. 一旦你在那里遇到一个TRUE
,你需要向上传播它:
BOOLEAN isIdUsed(Trin_Ari *root,int idNumber) {
if (root==NULL)
return FALSE;
if (root->id==idNumber)
return TRUE;
if (isIdUsed(root->left,idNumber))
return TRUE;
if (isIdUsed(root->middle,idNumber))
return TRUE;
if (isIdUsed(root->right,idNumber))
return TRUE;
return FALSE;
}
推荐阅读
- php - 安全上传PHP中的任何文件
- oracle - NVL 函数不返回表达式 2
- common-lisp - Common Lisp 中带有 &rest 和 &key 参数的 Lambda 列表错误
- php - HTML/PHP - 未定义的索引
- android - 科尔多瓦的网络工作者 - 是否支持
- git - Jira Smart 提交不运行命令
- javascript - 通过滚动不需要使用 vanilla Javascript 滚动的对象来触发不同 dom 对象的滚动
- c - C 链接器何时以及为什么会排除未使用的符号?
- python - Matplotlib/Seaborn - 多个值/列的分组条形图
- python - 无法理解 mongo 聚合