好吧,我已经完成了程序的最后一个功能,并且已经完成了。我又遇到了一个我自己似乎无法解决的问题。
int Tree::InternalPathLength(Node * r, int value)
{
if(r->left == NULL && r->right == NULL)
{
return 0;
}
return value + InternalPathLength(r->left, value+1) +
InternalPathLength(r->right, value+1);
}
我觉得我已经接近解决方案了,但我知道我错过了一些东西。我认为这是另一个 if 语句,我尝试了不同的组合,但最终得到了一个崩溃的程序或 0 的答案。
任何建议或帮助将不胜感激!谢谢!
最佳答案
也许这有效:
int Tree::InternalPathLength(Node * r, int value)
{
if(r->left == NULL && r->right == NULL)
{
return 0;
}
return value + ( r->left? InternalPathLength(r->left, value+1):0 )
+ ( r->right? InternalPathLength(r->right, value+1):0 );
}
或者只是为 NODE 添加 NULL 检查
int Tree::InternalPathLength(Node * r, int value)
{
if (r == NULL ) return 0;
if(r->left == NULL && r->right == NULL)
{
return value +1;
}
return value + InternalPathLength(r->left, value+1) +
InternalPathLength(r->right, value+1);
}
关于c++ - 确定树的内部路径长度 (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3878456/