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

求二叉树的层序遍历

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;
    }
};
全部评论

相关推荐

昨天 18:43
门头沟学院 Java
是暑期都招满了吗
投递腾讯等公司7个岗位
点赞 评论 收藏
分享
07-20 21:57
已编辑
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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