题目描述:从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
class Solution { public: vector<vector<int> > Print(TreeNode* pRoot) { vector<vector<int> > vec; if(pRoot == NULL) return vec; queue<TreeNode*> q; q.push(pRoot) ; while(!q.empty()) { vector<int> v ; int i = 0; int j = q.size(); while(i++ < j) { TreeNode* tmp = q.front(); q.pop(); v.push_back(tmp->val); if(tmp->left) q.push(tmp->left); if(tmp->right) q.push(tmp->right); } vec.push_back(v); v.clear(); } while (!q.empty()) q.pop(); return vec; } };
除了两个vector外还要建一个queue用来存每一层的节点,用于遍历。
先将每一层的节点存入queue,遍历queue,将本身放入vector,将它的左右孩子放入队列,遍历完一遍,将vector(每一层的节点)放入vector(树的遍历)
一直循环。