#include<iostream>
#include<queue>
using namespace std;
typedef struct node {
char data;
struct node *lchild;
struct node *rchild;
}bt_node , *bt_pointer;
//创建一棵二叉树
void init_tree( bt_pointer &T ){
char ch;
cin >> ch;
if( ch != '^' ) {
T = ( bt_pointer ) malloc ( sizeof( bt_node ) );
T -> data = ch;
init_tree( T -> lchild );
init_tree( T -> rchild );
}
else {
T = NULL;
}
}
//按层次遍历一棵二叉树
void BFS_Tree( bt_pointer T ){
queue<bt_pointer> q;
bt_pointer cur = NULL;
if( T != NULL ){
q.push( T );
while( ! q.empty() ) {
cur = q.front();//这里并不pop
q.pop();//需要pop
cout << cur -> data;
if( cur -> lchild ) {
q.push( cur -> lchild );
}
if( cur -> rchild ) {
q.push( cur -> rchild );
}
}
}
}
int main() {
bt_pointer root = NULL;
init_tree( root );
BFS_Tree( root );
cout << endl;
return 1;
}
//测试用例
//ABC^^DE^G^^^F^^^
怎样从顶部开始逐层打印二叉树结点数据
最新推荐文章于 2020-12-04 12:14:26 发布