【剑指offer 面试题23】从上往下打印二叉树

思路:

  没啥好说的,BFS。

C++:

 1 #include <iostream>
 2 #include <queue>
 3 using namespace std;
 4 
 5 struct TreeNode {
 6     int val;
 7     TreeNode *left;
 8     TreeNode *right;
 9     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
10 };
11 
12 void PrintFromTop2Bottom(TreeNode *root)
13 {
14     if(root == 0)
15         return ;
16 
17     queue<TreeNode* > QueueTreeNode;
18 
19     QueueTreeNode.push(root);
20 
21     while(!QueueTreeNode.empty())
22     {
23         TreeNode *temp = QueueTreeNode.front();
24         cout<<temp->val<<" ";
25         QueueTreeNode.pop();
26 
27         if(temp->left != 0)
28             QueueTreeNode.push(temp->left);
29         if(temp->right != 0)
30             QueueTreeNode.push(temp->right);
31     }
32 }
33 
34 int main()
35 {
36     TreeNode *Root = new TreeNode(0);
37     TreeNode *node1 = new TreeNode(1);
38     TreeNode *node2 = new TreeNode(2);
39     TreeNode *node3 = new TreeNode(3);
40     TreeNode *node4 = new TreeNode(4);
41     TreeNode *node5 = new TreeNode(5);
42     TreeNode *node6 = new TreeNode(6);
43 
44     Root->left = node1;
45     Root->right = node2;
46     node1->left = node3;
47     node1->right = node4;
48     node2->left = node5;
49     node2->right = node6;
50 
51     cout<<"      0"<<endl;
52     cout<<"  1       2"<<endl;
53     cout<<"3   4   5   6"<<endl<<endl;
54 
55     cout<<"从上往下打印二叉树:";
56     PrintFromTop2Bottom(Root);
57 }

 

测试结果:

      0
  1       2
3   4   5   6

从上往下打印二叉树:0 1 2 3 4 5 6

 

posted @ 2015-07-06 22:38  tjuloading  阅读(163)  评论(0)    收藏  举报