题解 | #求二叉树的层序遍历#

求二叉树的层序遍历

http://www.nowcoder.com/practice/04a5560e43e24e9db4595865dc9c63a3

1.用队列法对二叉树做层次遍历。没什么特别的。

/**
 * struct TreeNode {
 *	int val;
 *	struct TreeNode *left;
 *	struct TreeNode *right;
 * };
 */

class Solution {
public:
    /**
     * 
     * @param root TreeNode类 
     * @return int整型vector<vector<>>
     */
    vector<vector<int> > levelOrder(TreeNode* root) {
        // write code here
        vector<vector<int> > res = vector<vector<int>>();
        deque<TreeNode*> queue = deque<TreeNode*>();
        if (root!=nullptr) {
            queue.push_back(root);
        }
        int nextLevelLength = 1;
        while(queue.size()>0) {
            int newNextLevelLength  = 0;
            vector<int> currentLevel = vector<int>();
            for(int i=0;i<nextLevelLength;i++) {
                TreeNode* node = queue.front();
                queue.pop_front();
                if(node->left!=nullptr) {
                    newNextLevelLength++;
                    queue.push_back(node->left);
                }
                if(node->right!=nullptr) {
                    newNextLevelLength++;
                    queue.push_back(node->right);
                }
                currentLevel.push_back(node->val);
            }
            res.push_back(currentLevel);
            nextLevelLength = newNextLevelLength;
        }
        return res;
    }
};
全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 17:55
点赞 评论 收藏
分享
05-27 14:57
西北大学 golang
强大的社畜在走神:27届真不用急,可以搞点项目、竞赛再沉淀沉淀,我大二的时候还在天天打游戏呢
投递华为等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务