【发布时间】:2015-07-19 05:19:39
【问题描述】:
以下是 2 个代码: 1.在二叉搜索树中找到第k个最小的整数:
void FindKthSmallest(struct TreeNode* root, int& k)
{
if (root == NULL) return;
if (k == 0) return; // k==0 means target node has been found
FindKthSmallest (root->left, k);
if (k > 0) // k==0 means target node has been found
{
k--;
if (k == 0) { // target node is current node
cout << root->data;
return;
} else {
FindKthSmallest (root->right, k);
}
}
}
-
求二叉树的节点数:
int Size (struct TreeNode* root) { if (root == NULL) return 0; int l = Size (root->left); int r = Size (root->right); return (l+r+1); }
我的问题: 在这两个代码中,我都必须跟踪我访问的节点数。为什么代码 1 需要通过引用传递参数来跟踪我访问的节点数,而代码 2 不需要通过引用传递任何变量?
【问题讨论】:
标签: recursion binary-tree binary-search-tree