• 剑指offer-把二叉树打印成多行


    剑指offer-把二叉树打印成多行

    题目描述

    从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行

     题解:

        使用bfs。

    /*
    struct TreeNode {
        int val;
        struct TreeNode *left;
        struct TreeNode *right;
        TreeNode(int x) :
                val(x), left(NULL), right(NULL) {
        }
    };
    */
    class Solution {
    public:
            vector<vector<int> > Print(TreeNode* pRoot) {
                vector<vector<int> > ans; 
                if(pRoot == NULL){
                    return ans; 
                }
                TreeNode* tmp; 
                queue<int> sq;  sq.push(1); 
                queue<TreeNode*> sqr; sqr.push(pRoot); 
                int tmp_int, cur_layer = 1; 
                vector<int> elem; 
                while(!sqr.empty()){
                    tmp = sqr.front();  sqr.pop(); 
                    tmp_int = sq.front(); sq.pop(); 
                    if(tmp_int != cur_layer){
                        ans.push_back(elem); 
                        elem.clear();
                        cur_layer = tmp_int; 
                    }
                    elem.push_back( tmp->val ); 
                    if(tmp->left){
                        sqr.push( tmp->left ); 
                        sq.push(tmp_int + 1); 
                    }
                    if(tmp->right){
                        sqr.push( tmp->right );
                        sq.push(tmp_int + 1); 
                    }
                }
                ans.push_back(elem); 
                return ans; 
            }
        
    };
    

      

  • 相关阅读:
    E. 因数串
    三点共圆公式
    B-Suffix Array
    线段树求解连续区间问题
    E. Quantifier Question (拓扑排序求前驱和后继)
    CF1344B Monopole Magnets
    Multiset (权值线段树模版)
    459. 重复的子字符串 next数组
    6.21笔试小结
    canva学习笔记
  • 原文地址:https://www.cnblogs.com/zhang-yd/p/6618347.html
Copyright © 2020-2023  润新知