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
  • 相关阅读:
    leetcode 414
    Leetcode 495
    Leetcode 485题
    Python 24点(2)
    python 24点
    我的第一次作业
    Django
    multiprocessing模块
    遍历文档树
    shutil模块
  • 原文地址:https://www.cnblogs.com/wangxiaoyong/p/8810485.html
Copyright © 2011-2022 走看看