LeetCode 102. 二叉树的层次遍历
给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。
例如:
给定二叉树: [3,9,20,null,null,15,7]
,
返回其层次遍历结果:
[ [3], [9,20], [15,7] ]
算法:bfs。我们一层一层来搜索并存储当前结点的值即可。
/** * 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<int> getval(vector<TreeNode*>& p){ vector<int>path; for(auto x:p) path.push_back(x->val); return path; } vector<vector<int>> levelOrder(TreeNode* root) { vector<vector<int>>res; if(!root)return res; vector<TreeNode*>level; level.push_back(root); res.push_back(getval(level)); while(true){ vector<TreeNode*>nl; for(auto x:level){ if(x->left)nl.push_back(x->left); if(x->right)nl.push_back(x->right); } if(nl.size()){ res.push_back(getval(nl)); level=nl; } else break; } return res; } };