Leetcode102二叉树的层序遍历----队列运用

地址:

https://leetcode-cn.com/problems/binary-tree-level-order-traversal/submissions/

描述:

 

代码:

class Solution {
public:
    //!!!整体思路在操作上一层元素时,把下一层元素加入队列
    vector<vector<int>> levelOrder(TreeNode* root) {
    vector<vector<int>> ans;//保存结果
    if(!root) return ans;
    queue<TreeNode*> q;
    q.push(root);
    //将队列中的全部元素加到cur中,并从队列中删除
    while(q.size()){
        //统计下当前队列有多少元素(len=元素个数),避免把多余的元素删除
        //比如第一层只有元素1,len=1;第二层有元素9、20,len=2。
        int len=q.size();
        //保存当前层的节点
        vector<int> cur;
        for(int i=0;i<len;i++){
        //记录值保存下来,并将其删除
        TreeNode* temp=q.front();
        q.pop();
        cur.push_back(temp->val);
        //假如当前节点有左右子树就进行一次拓展,将下一层的节点加入到队列当中
        if(temp->left) q.push(temp->left);
        if(temp->right) q.push(temp->right);
        }//for
         //将本层的节点放入答案里
           ans.push_back(cur);
    }//while
    return ans;
    }
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值