102.Binary Tree Level Order Traversal

来源:互联网 发布:ipad自带软件 编辑:程序博客网 时间:2024/05/06 03:39
/** * Definition for a binary tree node. * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    vector<vector<int>> levelOrder(TreeNode* root)     {    vector<vector<int>> v;    vector<int> level;    TreeNode *temp;    queue<TreeNode *> q;    if (root) q.push(root);    while (!q.empty())    {    int len = q.size();    for (int i = 0; i < len; i++)    {    temp = q.front();    level.push_back(temp->val);    if (temp->left)q.push(temp->left);    if (temp->right)q.push(temp->right);    q.pop();    }        v.push_back(level);        level.clear();        }    return v;    }};



利用队列的先进先出的特点,
将每层所有结点的左右子结点按顺序分别入队,
用len记录每层的结点个数,用来控制for循环,
每个for循环遍历当前层所有结点,并保证了能将每一个结点的子节点按顺序入队。
每层遍历结束后清空vector。
0 0