关闭

【刷题之路】二叉树按层打印

标签: 刷题算法二叉树
81人阅读 评论(0) 收藏 举报

按层打印,换层换行

class TreePrinter {
public:
    vector<vector<int> > printTree(TreeNode* root) {
        // write code here
        TreeNode* last;
        TreeNode* nlast;
        vector<int> temp; //用于保存每一层的值
        queue<TreeNode*> tmp; //用于保存遍历的树节点
        vector<vector<int> > res;
        last=root;
        nlast=root;
        tmp.push(root);
        while(!tmp.empty()){
            last=tmp.front(); //last为队列的头,即为遍历的节点
            tmp.pop();
            temp.push_back(last->val);
            if(last->left) tmp.push(last->left); //将当前遍历的节点的左右子节点放入队列中
            if(last->right) tmp.push(last->right);   
            if(last==nlast){
                nlast=tmp.back(); //当last==nlast,下一层的所有节点必然已经全部放入队列中,于是让nlast=tmp的末尾,即为下一行的最后一个节点
                res.push_back(temp);
                temp.clear();
            }     
        }
        return res;
    }
};


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:10242次
    • 积分:797
    • 等级:
    • 排名:千里之外
    • 原创:72篇
    • 转载:2篇
    • 译文:0篇
    • 评论:1条