2013-10-17 64 views
1

我刚刚开始使用树并正在编写遍历二叉树并访问每个节点的函数。我为树中的每个节点调用一个名为doS​​omething(TreeNode * thisNode)的函数。我想确定我所拥有的东西是否正确,我是否正确?谢谢!遍历二叉树的函数

void MyTree::Traverse(TreeNode *rt) 
{ 

If(rt != NULL) 

Traverse(rt -> left); 
doSomething (rt); 
Traverse(rt -> right); 

} 

回答

1

差不多,但不完全。

C++中if声明没有资本化,则必须按如下加上括号:

void MyTree::Traverse(TreeNode *rt) 
{ 
    if(rt != NULL) 
    { 
     Traverse(rt -> left); 
     doSomething (rt); 
     Traverse(rt -> right); 
    } 
} 

如果不加括号,语句doSomething(rt)Traverse(rt->right)将如果节点是有效称为不管或不!

+0

非常感谢! –

0

用一些相关的测试用例来调试你的程序总是一个好主意。在你的代码中,如果rt不是NULL,你认为会发生什么?这应该可以帮助你弄清楚你是否做得对。