私がやりたいことは、ノードを順番にトラバースして、ノードを二分木で順番に出力できるようにすることです。
void inorder_traverse(node* root, function<void(node*)> visit)
{
if (root == nullptr) return;
cout << root->data << ", ";
inorder_traverse(root->left, visit);
visit(root);
inorder_traverse(root->right, visit);
}
二分木を順番にたどるこのコードを見ました。トラバースはすべてのノードを通過するため、トラバース機能を使用して、訪問したすべてのノードのすべてのデータを出力できると考えました。それはうまくいくでしょうか?ポリモーフィック関数のパラメーターに何を渡すか非常に混乱しています。
次のようなバイナリ ツリーを構築し、ツリー内のすべてのデータをトラバースして出力しようとすると、上記の関数 inorder_traverse に何を渡す必要がありますか?
struct node* root = new node(NULL);
root->data = 10;
root = insertion(root, 1);
root = insertion(root, 11);
root = insertion(root, 2);
root = insertion(root, 12);
root = insertion(root, 3);
root = insertion(root, 13);
root = insertion(root, 5);
root = insertion(root, 20);
root = insertion(root, 7);
root = insertion(root, 15);
ありがとう、私はそれを大いに感謝します。