层序遍历二叉树
题目描述:创建一棵二叉树,然后层序遍历输出节点
算法实现:
1 #include<iostream> 2 #include<deque> 3 using namespace std; 4 5 typedef struct BiTreeNode{ 6 int data; 7 struct BiTreeNode *left; 8 struct BiTreeNode *right; 9 }BiTreeNode; 10 11 void Print(BiTreeNode *pHead){ 12 if(pHead == NULL){ 13 return; 14 } 15 16 deque<BiTreeNode *> node; 17 node.push_back(pHead); 18 19 while(node.size()){ 20 BiTreeNode *pNode = node.front(); 21 node.pop_front(); 22 23 cout<<pNode->data<<' '; 24 25 if(pNode->left){ 26 node.push_back(pNode->left); 27 } 28 if(pNode->right){ 29 node.push_back(pNode->right); 30 } 31 } 32 } 33 34 //创建二叉树,使用前序创建二叉树,遇到-1表示节点为空 35 BiTreeNode* createTree() 36 { 37 int item; 38 BiTreeNode *t ; 39 cin>>item; 40 41 if(item != -1) 42 { 43 BiTreeNode *pTmpNode = new BiTreeNode(); 44 45 t = pTmpNode; 46 pTmpNode->data = item; 47 48 t->left = createTree(); 49 t->right = createTree(); 50 return t; 51 } 52 else 53 { 54 t = NULL; 55 return t; 56 } 57 } 58 59 int main(){ 60 BiTreeNode *p = createTree(); 61 Print(p); 62 return 0; 63 }
建立的二叉树:
输出结果:
参考书籍:
《剑指offer》