Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).
For example:
Given binary tree {3,9,20,#,#,15,7}
,
3 / \ 9 20 / \ 15 7
return its level order traversal as:
[ [3], [9,20], [15,7] ]
思路:这道题同样可以用层序遍历的思想,定义一个队列Q,指针front,rear分别记录每一层节点在Q中的起始坐标和终点坐标,然后遍历取得节点的值即可。
class Solution { public: vector<vector<int> > levelOrder(TreeNode *root) { vector<vector<int> > aa; vector<int> line; int front = 0, rear = -1; int index,i; if(root == NULL) { return aa; } vector<TreeNode*> Q; Q.push_back(root); rear = Q.size(); line.push_back(root->val); aa.push_back(line); while(front < rear) { index = rear; line.clear(); for(i=front; i<index; i++) { if (Q[i]->left != NULL) { Q.push_back(Q[i]->left); line.push_back(Q[i]->left->val); } if (Q[i]->right != NULL) { Q.push_back(Q[i]->right); line.push_back(Q[i]->right->val); } } rear = Q.size(); if (rear != index) { aa.push_back(line); } front = index; } return aa; } };