【剑指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