我刚从树开始,正在编写一个遍历二叉树并访问每个节点的函数。我正在为树中的每个节点调用一个名为doSomething(TreeNode * thisNode)的函数。我想确定我所拥有的是否正确以及我是否在正确的轨道上?谢谢!
void MyTree::Traverse(TreeNode *rt)
{
If(rt != NULL)
Traverse(rt -> left);
doSomething (rt);
Traverse(rt -> right);
}
答案 0 :(得分:1)
几乎,但不完全。
C ++中的if
语句不是大写的,您必须按如下方式添加括号:
void MyTree::Traverse(TreeNode *rt)
{
if(rt != NULL)
{
Traverse(rt -> left);
doSomething (rt);
Traverse(rt -> right);
}
}
如果您不添加括号,无论节点是否有效,都将调用语句doSomething(rt)
和Traverse(rt->right)
!
答案 1 :(得分:0)
使用一些相关的测试用例来调试程序总是一个好主意。在你的代码中,如果rt不是NULL,你认为会发生什么?这应该可以帮助你弄清楚你是否正确行事。