c - C中BST中的节点数
问题描述
int numOfNodes(struct node* rootPtr){
if(rootPtr== NULL) return 0;
int r = numOfNodes(rootPtr->right);
int l = numOfNodes(rootPtr->left);
return r+l+1;
}
有人可以向我解释这是如何工作的吗?递归对我来说有点困惑,因为我才刚刚开始。我知道这个 +1 是针对根节点的,但我不明白 r 和 l 是如何增加的。
解决方案
让我们看一下这个简单的树:
Root
/ \
A B
/ \
C D
那么调用和返回如下:
numOfNodes( Root )
numOfNodes(B)
numOfNodes(D)
return 1
numOfNodes(C)
return 1
return 3
numOfNodes(A)
return 1
return 5
推荐阅读
- xdp-bpf - XDP - 每个目标 IP/PORT 都有 AF_XDP 套接字?
- javascript - 如何启动成帧器运动?
- r - 如何在 r 中使用 mgsub 更改与 greple 命令匹配的所有单元格的单元格内容?
- c# - 错误映射类型...映射配置...目标成员
- google-apps-script - 如何使用 onEdit 功能观看多个标签
- javascript - 带有香草js的数组中匹配条目的grt数
- excel - 在设计模式下循环选择用户窗体控件
- reactjs - 如何在 useEffect() 中使用 React history.push() 路由到不同的页面
- java - ICEpdf 不呈现 PDF
- java - JsonPath / Java 如何在过滤中应用数据类型转换