zoukankan      html  css  js  c++  java
  • 【leetcode】Binary Tree Level Order Traversal I & II

    Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).

    For example:
    Given binary tree {3,9,20,#,#,15,7},

        3
       / 
      9  20
        /  
       15   7
    

    return its level order traversal as:

    [
      [3],
      [9,20],
      [15,7]
    ]

    分层遍历二叉树,用BFS即可

    class Solution {
    public:
        vector<vector<int>> levelOrder(TreeNode* root) {
            queue<TreeNode*> Q;
            vector<vector<int>> ans;
            Q.push(root);
            while(!Q.empty())
            {
                int e = Q.size(); //当前层的结束位置
                vector<int> partans;
                for(int i = 0; i < e; i++)
                {
                    TreeNode * p = Q.front();
                    Q.pop();
                    if(NULL != p)
                    {
                        partans.push_back(p->val);
                        Q.push(p->left);
                        Q.push(p->right);
                    }
                }
                if(!partans.empty())
                    ans.push_back(partans);
            }
            return ans;
        }
    };

    网上DFS的代码:

    class Solution {
    protected:
        vector<vector<int>> ans;
        void dfs(TreeNode *root, int height){
            if (root == NULL) 
                return;
            while (ans.size() <= height)
                ans.push_back(vector<int>());
            ans[height].push_back(root->val);
            dfs(root->left, height + 1);
            dfs(root->right, height + 1);
        }
    
    public:
        vector<vector<int>> levelOrder(TreeNode* root) {
           dfs(root, 0);
            return ans;    
        }
    };

    Binary Tree Level Order Traversal II

    Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left to right, level by level from leaf to root).

    For example:
    Given binary tree {3,9,20,#,#,15,7},

        3
       / 
      9  20
        /  
       15   7
    

    return its bottom-up level order traversal as:

    [
      [15,7],
      [9,20],
      [3]
    ]

    跟上面只是顺序变了,加个reverse就行了。

  • 相关阅读:
    Hibernate保存方式的区别
    活动图
    Apache新增站点配置
    Apache安装
    360度全方位沟通向上沟通
    时间转换
    PostgreSQL 9.2中将引入生成JSON数据功能
    Delphi 读取dbgrid中的选中一行的代码及定位函数
    彻底解决Delphi的DBGrid控件鼠标滚轮问题(转)
    DB2与PostgreSQL开发的异同
  • 原文地址:https://www.cnblogs.com/dplearning/p/4627247.html
Copyright © 2011-2022 走看看