LeetCode102—Binary Tree Level Order Traversal

来源:互联网 发布:seo关键词优化怎么做 编辑:程序博客网 时间:2024/05/22 08:33

Binary Tree Level Order Traversal

原题

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]
]

二叉树的层序遍历。

分析

层序遍历简单,麻烦就在于要维护两个“指针”记录每一层是否遍历完成:因为每次出队前都要新加入左右子树作为节点(如果存在),当前层的节点数即front对头元素,到队尾rear元素的大小。

代码

class Solution {private:    void bfs(TreeNode *root, vector<vector<int>>&result)    {        if (root==NULL)            return;        vector<int>temp;        vector<TreeNode*>q;        int front = 0;        int rear = 1;        q.push_back(root);        while (front < q.size())        {            rear = q.size();            while (front < rear)            {                temp.push_back(q[front]->val);                if (q[front]->left != NULL)                    q.push_back(q[front]->left);                if (q[front]->right != NULL)                    q.push_back(q[front]->right);                ++front;            }            result.push_back(temp);            temp.clear();        }    }public:    vector<vector<int>> levelOrder(TreeNode* root) {        vector<vector<int>>result;        bfs(root, result);        return result;    }};
0 0
原创粉丝点击