zoukankan      html  css  js  c++  java
  • leetcode之二叉树的层序遍历

    1、题目描述

    2、题目分析

         二叉树的层序遍历主要算法思想是使用 队列这一数据结构实现,这个数据结构多应用在和 图相关的算法。例如图的广度优先遍历就可以使用队列的方法实现。本题的关键在于如何识别出一层已经打印完毕。解决思路是在每一层结束时加入一个特殊字符如NULL.

    访问到 NULL 时 就知道一层访问完毕,接下来的元素是下一层的元素。

    3、代码

    vector<vector<int>> levelOrder(TreeNode* root) {
            vector<vector<int> > ans;
            if( root == NULL )
                return ans ;
            
            queue<TreeNode* > q;
            q.push(root);
            q.push(NULL);
            
            vector<int> level;
            
            while( !q.empty() )
            {
                TreeNode* p = q.front();
                q.pop();
                
                if(p == NULL)
                {
                    ans.push_back(level);
                    level.resize(0);
                    if(q.size() > 0)
                    {
                        q.push(NULL);
                    }
                }
                else
                {
                    level.push_back(p->val);
                    if( p->left != NULL )
                        q.push( p->left );
                    if( p->right != NULL )
                        q.push( p->right ); 
                }
            }
            return ans;
       
        }
    pp
  • 相关阅读:
    断棍构造过程-波利亚翁方案-中餐馆过程
    狄利克雷过程
    狄利克雷分布
    共轭先验(conjugate prior)
    镜像与文件系统
    Oracle-04
    Oracle-02
    Oracle-01
    认识数据库
    c:forEach的作用
  • 原文地址:https://www.cnblogs.com/wangxiaoyong/p/8810485.html
Copyright © 2011-2022 走看看