遍历二叉树的函数

Function to traverse a binary tree

本文关键字:函数 二叉树 遍历      更新时间:2023-10-16

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

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

几乎,但不完全是。

C++ 中的 if 语句未大写,必须按如下方式添加括号:

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

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

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