• [剑指Offer] 把二叉树打印成多行


    问题描述

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

    分析

    方法一 层与层之间用NULL分隔

          5
        /   
       3     7
      /    / 
     2   4 6   8
    

    队列中元素变化

    5#
    #37
    37#
    7#24
    #2468
    2468
    
    vector<vector<int> > Print(TreeNode* pRoot) {
        vector<vector<int>> result;
        if (pRoot == NULL) return  result;
    
        queue<TreeNode*> q;
        q.push(pRoot);
        q.push(NULL);
    
        vector<int> v;
    
        while (!q.empty()) {
            TreeNode* tmp = q.front();
            q.pop();
    
            if (tmp == NULL) {
                result.push_back(v);
                v.clear();
            } else {
                v.push_back(tmp->val);
            }
    
            if (tmp && tmp->left) {
                q.push(tmp->left);
            }
            if (tmp && tmp->right) {
                q.push(tmp->right);
            }
    
            if(tmp == NULL && !q.empty()) { //队列为空后不再添加NULL
                q.push(NULL);
            }
        }
    
        return result;
    }
    

    方法二 统计每一层的元素个数

    vector<vector<int> > Print(TreeNode* pRoot) {
        vector<vector<int>> result;
        if (!pRoot) return  result;
    
        queue<TreeNode*> q;
        q.push(pRoot);
    
        while (!q.empty()) {
            int count = q.size();
            vector<int> v;
            while (count--) {
                TreeNode* node = q.front();
                q.pop();
    
                v.push_back(node->val);
    
                if (node->left) q.push(node->left);
                if (node->right) q.push(node->right);
            }
            result.push_back(v);
        }
    
        return result;
    }
    
  • 相关阅读:
    HTML5语义化标签
    VueRouter配置2index.js文件
    Vue中的App组件
    vuerouter具体配置1
    SGML、HTML、XML、XHTML、HTML5
    Vue中,props配置项
    Vue单文件组件的使用
    html5有哪些新特性,移除了哪些元素
    VueRouter具体流程
    html单选与多选框
  • 原文地址:https://www.cnblogs.com/arcsinw/p/12986208.html
Copyright © 2020-2023  润新知