Я пытаюсь написать функцию, которая пересекает дерево, пока не найдет узел, который содержит заданное значение (в данном случае символ). Я пытался что-то вроде этого:Функция, которая ищет определенный узел в двоичном дереве?
struct HuffTreeNode* findNode (struct HuffTreeNode* root, unsigned char symbol)
{
if (root != NULL)
{
if (root->symbol == symbol)
{
return root;
}
else
{
findNode(root->left,symbol);
findNode(root->right,symbol);
}
}
return root;
}
Так что, если я назвал findNode(root,'c')
, он будет возвращать узел, который содержит «с». Однако я не могу заставить эту функцию работать, любые идеи?
Примечание: Я знаю, что указанная выше функция не имеет ответа, если узел с указанным символом не существует, но пока я просто вызываю его, используя символы, которые, как я знаю, содержатся внутри дерева.
'findNode (root," c ")'. Вы действительно вызываете это так? Второй аргумент неверен. Это должно быть '' c''. – kaylum
Что означает * «Я не могу заставить эту функцию работать» * означает? Также вы рекурсивно называете 'findNode' справа и слева, но вы ничего не делаете с их возвращаемыми значениями. –
И вы фактически не возвращаете никаких результатов из своих рекурсивных вызовов. – kaylum