层序遍历

我与影子孤独终老i 提交于 2020-01-21 01:03:03

题目描述:给定一个二叉树,返回该二叉树层序遍历的结果,(从左到右,一层一层地遍历)

解题思路:思路来自牛客网努力的牛牛
利用队列这个数据结构,队列是先进先出的。因为是按照从左到右的顺序层次遍历,所以用队列记录每一层的根结点,然后根据队列的大小(即这一层的节点数目),依次将队列中的节点取出,加入到vector中,将左子树和右子树放入队列。每一层遍历过后,将这一层vecotr加入总的vector中,最终就能获得层次遍历的结果。

class Solution {
public:
    vector<vector<int> > levelOrder(TreeNode *root) {
        vector<vector<int>>res;
        if (root==NULL)
            return res;
        queue<TreeNode*>store;
        vector<int>cur;
        store.push(root);
        while(!store.empty()){
            cur.clear();
            int n = store.size();
            for (int i = 0; i < n;++i){
                TreeNode*node = store.front();
                store.pop();
                cur.push_back(node->val);
                if (node->left!=NULL)
                    store.push(node->left);
                if (node->right!=NULL)
                    store.push(node->right);
            }
            res.push_back(cur);
        }
        return res;
    }
};
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!