如何计算给定数字在二叉树中出现的次数?
How to count number times a given number appears in binary tree?
有人可以告诉我为什么我的代码不起作用吗?我正在尝试使用递归来计算给定值在二叉树中出现的次数。但是,这种方法不起作用。我真的很感激一些反馈和见解。谢谢。
public int valCount(int val) {
if (root == null) {
return 0;
}
return valCount(val, *root);
}
public int valCount(int val, Node *root) {
int cnt = 0;
if (root->left != null) {
if (root->data == val) {
cnt++;
}
int leftValCount = valCount(val, root->left);
}
if (root->right != null) {
if (root->data == val) {
cnt++;
}
int rightValCount = valCount(val, root->right);
}
return cnt + leftValCount + rightValCount;
}
递归中的一个常见错误是担心当前帧以外的堆栈帧。让递归为您完成这项工作。遵循此经验法则使代码更容易推理。
算法很简单:对于每个节点,如果当前节点与目标值匹配,则返回 1,如果不匹配,则返回 0,并在左右子树上添加调用相同函数的结果。基本情况是当使用空根调用函数时,返回 0。
int valCount(int val, Node *root) {
if (!root) return 0;
return (root->val == val ? 1 : 0) +
valCount(val, root->left) +
valCount(val, root->right);
}
相关文章:
- 从父数组测试用例构造二叉树失败
- 打印时有二叉树问题.用户输入不打印任何内容
- 试图找到二叉树的深度
- 二叉树结构平衡,使用递归时EXC_BAD_ACCESS
- 指向二叉树中新节点的指针
- 我试图用这段代码找到二叉树的高度,但它一直返回 0,有人可以告诉我为什么吗?
- C++:如何计算二叉树中其值模块高度小于 2 的节点数?
- 二叉树级别顺序遍历在leetcode中
- 运行无限循环的最小二叉树问题
- 打印二叉树中的常见元素
- 二叉树基准测试结果
- 带有矢量重复值的二叉树打印出来
- 签入二叉树的函数是平衡C++
- 我有两棵二叉树.我想在不更改输入树的情况下深度复制两个二叉树的结果
- 如何计算给定数字在二叉树中出现的次数?
- 为什么我的二叉树会覆盖其根的叶子?
- 将二叉树的节点插入链表 (C++)
- 二叉树实现 - 分支上的数字被替换
- 在二叉树中插入4或5个数字,但输出中只有3个数字
- 仍然找不到二叉树中的最大数字