我要做的是按顺序遍历节点,这样我就可以按顺序打印二叉树中的节点。
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);
谢谢,我将不胜感激。