> 文档中心 > 二叉树层序遍历

二叉树层序遍历

在这里插入图片描述
层序遍历的思路:
在这里插入图片描述

#includeusing namespace std;#include//树的结构体struct BinaryNode{char data;BinaryNode* lchild;BinaryNode* rchild;};//层序遍历void output(BinaryNode* Anode){//初始化队列queue<BinaryNode> tree;//判断传入的根指针是否为空if (Anode == NULL){return;}tree.push(*Anode);BinaryNode tempNode;//循环队列直到队列为空while (!tree.empty()){//队头元素出队tempNode = tree.front();tree.pop(); //输出数据域cout << tempNode.data << " ";//判断左右孩子是否为空,不为空就入队if (tempNode.lchild != NULL)tree.push(*tempNode.lchild);if (tempNode.rchild != NULL)tree.push(*tempNode.rchild);}}//初始化树void init_Tree(){BinaryNode Anode = { 'A',NULL,NULL };BinaryNode Bnode = { 'B',NULL,NULL };BinaryNode Cnode = { 'C',NULL,NULL };BinaryNode Dnode = { 'D',NULL,NULL };BinaryNode Enode = { 'E',NULL,NULL };BinaryNode Fnode = { 'F',NULL,NULL };BinaryNode Gnode = { 'G',NULL,NULL };//建立关系Anode.lchild = &Bnode;Anode.rchild = &Cnode;Bnode.lchild = &Dnode;Dnode.rchild = &Gnode;Cnode.lchild = &Enode;Cnode.rchild = &Fnode;output(&Anode);}int main(){init_Tree();system("pause");return 0;}

在这里插入图片描述