遍历二叉树的函数

时间:2013-10-17 02:42:09

标签: c++ function binary-tree tree-traversal

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

void MyTree::Traverse(TreeNode *rt)
{

If(rt != NULL)

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

}

2 个答案:

答案 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,你认为会发生什么?这应该可以帮助你弄清楚你是否正确行事。