Функция для прохождения бинарного дерева

Я только начинаю с деревьев и пишу функцию, которая пересекает двоичное дерево и посещает каждый узел. Я вызываю функцию doSomething (TreeNode * thisNode) для каждого узла в дереве. Я хочу убедиться, что то, что у меня есть, правильно и что я на правильном пути? Спасибо!

void MyTree::Traverse(TreeNode *rt)
{

If(rt != NULL)

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

}

1

Решение

Почти, но не совсем.

if оператор в C ++ не пишется с большой буквы, и вы должны добавить скобки следующим образом:

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

Если вы не добавите скобки, заявления doSomething(rt) а также Traverse(rt->right) будет вызываться независимо от того, действителен узел или нет!

1

Другие решения

Это всегда хорошая идея для отладки вашей программы с некоторыми соответствующими тестами. Как вы думаете, что произойдет в вашем коде, если rt не NULL? Это должно помочь вам понять, правильно ли вы это делаете.

0

По вопросам рекламы [email protected]