输入格式
输入一棵二叉树的加入空树信息的先序遍历序列,以#字符表示空树。
输出格式
输出二叉树的层次遍历的序列。
输入样例
ab#c##d##
输出样例
abdc
链二叉树结点代码
typedef struct treeNode
{
char data;
struct treeNode* lchild, * rchild;
}treeNode, * BiTree;
先序遍历创建二叉树
主要还是递归的思想,返回结点的地址
//先序遍历序列建立二叉链表
treeNode* createTree()
{
char c;
cin >> c;
if (c == '#') return NULL;
else
{
treeNode* t = new treeNode;
t->data = c;
t->lchild = createTree();
t->rchild = createTree();
return t;
}
}
按层次遍历二叉树
要用到队列,输出一个结点后其左右孩子按顺序进入队列,达到排序效果
//按层次遍历二叉树
void prePrint(treeNode* T)
{
queue<treeNode*>q;
q.push(T);
while (!q.empty())
{
cout << q.front()->data;
if (q.front()->lchild != NULL) q.push(q.front()->lchild);
if (q.front()->rchild != NULL) q.push(q.front()->rchild);
q.pop();
}
}