【发布时间】:2017-05-23 03:47:22
【问题描述】:
我正在学习我的导师设计的“通用树”课程,但无法理解某个概念。 里面有一个函数返回给用户,最高值的节点,下面是它的代码。
const Node<T> * getLargestNode() const {
return getLargestNodeHelper(root);
}
我知道我们需要一个辅助函数,因为我们需要递归地执行它,因此需要一个参数。因此,需要一个辅助函数来将根作为参数传递,因为根不能作为主函数的参数传递,因为不需要访问内部数据成员。 下面是辅助函数的代码
private:
static const Node<T> * getLargestNodeHelper(const Node<T> * node) {
if (node == NULL) {
return NULL;
}
const Node<T> * largest = node;
for (int i = 0; i < node->children.size();i++) {
const Node<T> * childlargest = getLargestNodeHelper(node->children[i]);
if (childlargest->data > largest->data) {
largest = childlargest;
}
}
return largest;
}
现在,当我尝试自己创建相同的类时,我创建了如下所示的辅助函数,
private:
const Node<T> * getLargestNodeHelper(const Node<T> * node) const {
if (node == NULL) {
return NULL;
}
const Node<T> * largest = node;
for (int i = 0; i < node->children.size();i++) {
const Node<T> * childlargest = getLargestNodeHelper(node->children[i]);
if (childlargest->data > largest->data) {
largest = childlargest;
}
}
return largest;
}
现在,我的疑问是,使用我的辅助函数版本有什么缺点吗?两者有什么区别,既不能改变数据成员,又不能从对象中调用?
【问题讨论】:
标签: c++ static tree constants private