美文网首页
35. 把二叉树打印成多行(思路待补充)

35. 把二叉树打印成多行(思路待补充)

作者: HamletSunS | 来源:发表于2019-08-06 12:16 被阅读0次

    题目:
    把二叉树打印成多行,按层分行
    思路:

    • 层序遍历,使用队列
    • 每次入队记录一下当前的层号,考虑到vector是基0,不妨从0层开始计数,这样存数据时比较方便,否则会发生level-1的尴尬

    待补充:
    本题好像还有许多思路,比如书本上的计数法,左神的两个指针指示换行,我还没有理解,需要之后巩固

    class Solution {
    public:
            vector<vector<int> > Print(TreeNode* root) {
                ret.clear();
                if(!root)
                    return ret;
                queue<pair<int,TreeNode *>> qu;
                qu.push(make_pair(0,root));
                while(!qu.empty()){
                    int level=qu.front().first;
                    TreeNode *node=qu.front().second;
                    qu.pop();
                    if(ret.size()==level)
                        ret.push_back(vector<int>());
                    ret[level].push_back(node->val);
                    if(node->left)
                        qu.push(make_pair(level+1,node->left));
                    if(node->right)
                        qu.push(make_pair(level+1,node->right));
                }
                return ret;
            }
        
    private:
        vector<vector<int>> ret;
        
    };
    

    相关文章

      网友评论

          本文标题:35. 把二叉树打印成多行(思路待补充)

          本文链接:https://www.haomeiwen.com/subject/mzeidctx.html