1

我只是从树开始,正在编写一个遍历二叉树并访问每个节点的函数。我正在为树中的每个节点调用一个名为 doSomething(TreeNode *thisNode) 的函数。我想确定我所拥有的是否正确以及我是否走在正确的轨道上?谢谢!

void MyTree::Traverse(TreeNode *rt)
{

If(rt != NULL)

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

}
4

2 回答 2

1

差不多,但不完全。

C++中的if语句不大写,必须加括号,如下:

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

如果不加括号,无论节点是否有效,都会调用语句doSomething(rt)和!Traverse(rt->right)

于 2013-10-17T02:46:33.267 回答
0

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

于 2013-10-17T02:47:08.693 回答