我只是从树开始,正在编写一个遍历二叉树并访问每个节点的函数。我正在为树中的每个节点调用一个名为 doSomething(TreeNode *thisNode) 的函数。我想确定我所拥有的是否正确以及我是否走在正确的轨道上?谢谢!
void MyTree::Traverse(TreeNode *rt)
{
If(rt != NULL)
Traverse(rt -> left);
doSomething (rt);
Traverse(rt -> right);
}
我只是从树开始,正在编写一个遍历二叉树并访问每个节点的函数。我正在为树中的每个节点调用一个名为 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,您认为会发生什么?这应该可以帮助您确定您是否做得对。