层序遍历二叉树

题目描述:创建一棵二叉树,然后层序遍历输出节点

算法实现:

 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》

posted @ 2016-04-10 18:07  Dormant  阅读(806)  评论(0编辑  收藏  举报