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

求二叉树的层序遍历

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

class Solution {
//可以不同队列,用一个id指向当前层的第一个node即可,需要同时维护node和val两个列表
public:
    /**
     * 
     * @param root TreeNode类 
     * @return int整型vector<vector<>>
     */
    vector<vector<int> > levelOrder(TreeNode* root) {
        // write code here
        vector<vector<int>> result;
        if(!root) return result;
        vector<int> head_val = {root->val};
        result.push_back(head_val);

        vector<vector<TreeNode*>> one_layer_node;
        vector<TreeNode*> head = {root};
        one_layer_node.push_back(head);



        int layer_id = 0;
        while(layer_id<one_layer_node.size()){

            vector<int> layer_val;
            vector<TreeNode*> layer_node;
            for(int i=0; i<one_layer_node[layer_id].size(); i++){

                if(one_layer_node[layer_id][i]->left){
                    layer_val.push_back(one_layer_node[layer_id][i]->left->val);
                    layer_node.push_back(one_layer_node[layer_id][i]->left);
                }
                if(one_layer_node[layer_id][i]->right){
                    layer_val.push_back(one_layer_node[layer_id][i]->right->val);
                    layer_node.push_back(one_layer_node[layer_id][i]->right);
                }
            }
            if(layer_node.size()>0){
                one_layer_node.push_back(layer_node);
                result.push_back(layer_val);
            }
            layer_id+=1;

        }

        return result;
    }
};


全部评论

相关推荐

从明天开始狠狠卷JV...:叽里咕噜一大堆,不就是字典序,sort一下就搞定了。
投递京东等公司10个岗位
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-28 00:10
已编辑
码农索隆:这哥们库库在我帖子下评论
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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