结构体
struct node
{
typename data;//可增加其他变量
node* lchild;
node* rchild;
};
先序遍历
void preorder(node* root) {
if (root==NULL)
{
return;
}
printf("%d\n", root->data);
preorder(root->lchild);
preorder(root->rchild);
}
中序遍历
void inorder(node* root) {
if (root==NULL)
{
return;
}
preorder(root->lchild);
printf("%d\n", root->data);
preorder(root->rchild);
}
后序遍历
void postorder(node* root) {
if (root==NULL)
{
return;
}
preorder(root->lchild);
preorder(root->rchild);
printf("%d\n", root->data);
}
层序遍历
void Layerorder(node* root) {
queue<node*> q;
q.push(root);
while (!q.empty())
{
node* now = q.front();
q.pop();
printf("%d", now->data);
if (now->lchild != NULL)q.push(now->lchild);
if (now->rchild != NULL)q.push(now->rchild);
}
}
先序遍历和中序遍历推二叉树
中序遍历和后序遍历推二叉树
参考晴神的算法笔记