【算法】二叉树的各种遍历方式

x33g5p2x  于2022-03-13 转载在 其他  
字(0.6k)|赞(0)|评价(0)|浏览(147)

1.前序遍历
根-左-右的顺序遍历,可以使用递归

void preOrder(Node *u){
    if(u==NULL)return;
    printf("%d ",u->val);
    preOrder(u->l);preOrder(u->r);
}

2.中序遍历
左-根-右的顺序遍历,可以使用递归

void inOrder(Node *u){
    if(u==NULL)return;
    inOrder(u->l);
    printf("%d ",u->val);
    inOrder(u->r);
}

3.后序遍历
左-右-根的顺序遍历,可以使用递归

void postOrder(Node *u){
    if(u==NULL)return;
    postOrder(u->l);postOrder(u->r);
    printf("%d ",u->val);
}

4.层序遍历
使用队列,类似于BFS宽搜算法
每次将左和右结点放入队列,然后将队头输出

void bfs(Node *t){
	queue<Node*>q;
	Node *ft;
	q.push(t);
	while(q.size()){
		ft=q.front();
		q.pop();
		if(ft==NULL)continue;
		else{
			printf("%d ",ft->val);
			q.push(ft->l);
			q.push(ft->r);
		}
	}
	
}

相关文章

微信公众号

最新文章

更多