C++で順番にトラバーサルを行う基本的な関数があります。
void inorder(Node *root)
{
if(root != NULL)
{
inorder(root->left);
cout<<root->data<<endl;
inorder(root->right);
}
}
ただし、この結果として、順序トラバーサルでリストを返したいと思います。しかし重要なことは、この再帰関数が実際にいつ終了し、リストを返すことができるかをどのように判断できるかということです。これまでに行ったコードは次のとおりです。
vector<int> inorder(Node *root, vector<int> listToAdd)
{
if(root != NULL)
{
inorder(root->left, listToAdd);
listToAdd.push_back(root->data);
inorder(root->right, listToAdd);
//return here?
}
// return here?
}
この質問の答えは、再帰のコアコンセプトにも役立つと思います