//二叉树
struct node{
int data;
int layer;//层次
node* lchild;
node* rchild;
}
//前序遍历 根左右
//下面两个1之间,是第一次来到一个节点的时候,然后到左树遍历,遍历完后要回到根,然后继续右树遍历,。两个2之间,虽然什么也没做。
void preorder(node* root){
//1
if(root == NULL) return;
printf("%d\n",root->data);
//1
preorder(root->lchild);
//2
//2
preorder(root->rchild)
}
//中序遍历,左根右
void midorder(node* root){
if(root == NULL) return;
midorder(root->lchild);
printf("%d\n",root->data);
midorder(root->rchilid);
}
//后序遍历,左右根
void lastorder(node* root){
if(root == NULL) return;
lastorder(root->lchild);
lastorder(root->rchild);
printf("%d\n",root->data);
}
//层序遍历,类似BFS
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);
}
}
二叉树,二叉平衡树,完全二叉树,二叉查找/搜索树
最新推荐文章于 2024-04-05 20:44:38 发布