102.二叉树的层次遍历

C++中容器queue的使用

  • front(),back()访问队首队尾元素;pop(),push()出队和入队

题目:

给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。

例如:
给定二叉树: [3,9,20,null,null,15,7],

3
/ \
9 20
    / \
  15 7
返回其层次遍历结果:

[
[3],
[9,20],
[15,7]
]

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/binary-tree-level-order-traversal
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

用队列实现二叉树的层次遍历

 1 /**
 2  * Definition for a binary tree node.
 3  * struct TreeNode {
 4  *     int val;
 5  *     TreeNode *left;
 6  *     TreeNode *right;
 7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 8  * };
 9  */
10 class Solution {
11 public:
12     vector<vector<int>> levelOrder(TreeNode* root) {
13         vector<vector<int>> res;
14         if(!root) return res;
15         queue<TreeNode*> qu;
16         qu.push(root);
17         while(!qu.empty()){
18             vector<int> tmp;
19             int len=qu.size();
20             for(int i=0;i<len;++i){   
21                TreeNode *node=qu.front();
22                qu.pop();
23                tmp.push_back(node->val);
24                if(node->left) qu.push(node->left);
25                if(node->right) qu.push(node->right);
26             }
27             res.push_back(tmp);
28         }
29         return res;
30     }
31 };

注意 

使用队列层次遍历二叉树,先把结点入队,如果队列不为空,输出队头元素。如果输出元素左右孩子不为空,依次把左右孩子入队。

posted @ 2020-01-08 18:54  Makerr  阅读(111)  评论(0编辑  收藏  举报