以前にこのトピックに関する質問を投稿しましたが、これもわかりません。キー値で順序付けられていないバイナリ ツリーを検索し、再帰関数を介して関連する値を返そうとしています。
クラスの形式は次のとおりです。
Class Node
{
private:
Node *leftChild;
Node *rightChild;
int key;
int value;
}
各変数には get メソッドが関連付けられています。したがって、基本的にはバイナリ ツリーを検索し、正しいノードに到達したらその値を返したいと考えています。
これまでの私の試みは次のとおりです。私はかなり近いと思います:
int preOrder(Node *node, int key)
{
if(node->getKey() == key)
return node->getValue();
Node* leftNode = node->getLeft();
if(leftNode != NULL)
{
return preOrder(leftNode, key);
}
Node* rightNode = node->getRight();
if(rightNode != NULL)
{
return preOrder(rightNode, key);
}
//I know a return statement needs to be placed here
//in case both pointers are NULL in order to return to the previous
//node in the tree, but I'm not sure how to do this...
}
誰かアドバイスはありますか?