我解决这道题用的是一个双端队列配合,按照层次把节点push到队列中,先把该节点的值存入到vector中,然后在该队列中移除该节点。当一层结束后,开始判断该层每个节点的左右子树,push到队列中,重新循环。class Solution {
public:
vector<vector<int>> levelOrder(TreeNode* root) {
vector<vector<int>> res;
queue<TreeNode*> tree;
if(root == NULL)
return res;
tree.push(root);
while(!tree.empty())
{
vector<int> temp;
int size = tree.size();
for(int i=0; i < size; i++)
{
TreeNode* t = tree.front();
tree.pop();
temp.push_back(t->val);
if(t->left)
tree.push(t->left);
if(t->right)
tree.push(t->right);
}
res.push_back(temp);
}
return res;
}
};
102. Binary Tree Level Order Traversal
最新推荐文章于 2020-03-09 16:24:05 发布