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 に答える