题目描述
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
解题思路
这是二叉树的层序遍历,直接使用构造队列(queue),来实现每层打印。
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| struct TreeNode { int val; struct TreeNode* left; struct TreeNode* right; TreeNode (int x): val(x), left(NULL), right(NULL) {} }; class Solution { public: vector<vector<int> > Print (TreeNode* pRoot) { vector<vector<int> > result; if (pRoot == NULL) return result; queue<TreeNode*> Q; Q.push(pRoot); while (!Q.empty()) { vector<int> temp; int num = Q.size(); for (int i = 0; i < num; i++) { TreeNode* front = Q.front(); if (front->left != NULL) Q.push(front->left); if (front->right != NULL) Q.push(front->right); temp.push_back(front->val); Q.pop(); } if (!temp.empty()) result.push_back(temp); } return result; } };
|