【LeetCode】102. 二叉树的层序遍历、107. 二叉树的层序遍历 II

 作者:小卢

专栏:《Leetcode》

喜欢的话:世间因为少年的挺身而出,而更加瑰丽。                                  ——《人民日报》


 102. 二叉树的层序遍历

102. 二叉树的层序遍历

给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)

 示例:

思路:

我们这里利用一个队列q和levelsize(代表当前层数据的个数)

扫描二维码关注公众号,回复: 16308355 查看本文章

一开始我们先压入一个数值到q,并且levelsize为1,当q不为空会时,我们循环levesize次,每次取队头,取完后再判断取的元素有没有左右节点,有的话就压入,然后结束循环的时候更新levelsize

代码:

class Solution {
public:
    vector<vector<int>> levelOrder(TreeNode* root) {
        queue<TreeNode*>q;
        int levelsize=0;
        if(root)
        {
            q.push(root);
            levelsize=1;
        }
        vector<vector<int>>vv;
        while(!q.empty())
        {
            vector<int>v;
            while(levelsize--)
            {
                TreeNode*front=q.front();
                q.pop();
                v.push_back(front->val);
                if(front->left)
                {
                    q.push(front->left);
                }
                if(front->right)
                {
                    q.push(front->right);
                }
            }
            levelsize=q.size();
            vv.push_back(v);
        }
        return vv;
    }
};

 107. 二叉树的层序遍历 II

 107. 二叉树的层序遍历 II

题目: 

给你二叉树的根节点 root ,返回其节点值 自底向上的层序遍历 。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)

示例:

思路:

和上题一样,就结尾多一个逆置。

代码:

class Solution {
public:
    vector<vector<int>> levelOrderBottom(TreeNode* root) {
        queue<TreeNode*>q;
        int levelsize = 0;
        if (root)
        {
            q.push(root);
            levelsize = 1;
        }
        vector<vector<int>>vv;
        while (!q.empty())
        {
            vector<int>v;
            while (levelsize--)
            {
                TreeNode* front = q.front();
                q.pop();
                v.push_back(front->val);
                if (front->left)
                {
                    q.push(front->left);
                }
                if (front->right)
                {
                    q.push(front->right);
                }
            }
            levelsize = q.size();
            vv.push_back(v);
        }
        reverse(vv.begin(),vv.end());
        return vv;
    }
};

猜你喜欢

转载自blog.csdn.net/m0_69061857/article/details/131036213