• LeetCode 剑指 Offer 32


    地址  https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-cha-shu-lcof/

    从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。
    
     
    
    例如:
    给定二叉树: [3,9,20,null,null,15,7],
    
        3
       / 
      9  20
        /  
       15   7
    返回:
    
    [3,9,20,15,7]
     
    
    提示:
    
    节点总数 <= 1000

    解法

    进行树的遍历 然后放入vector
    但是DFS的深度优先并不符合优先打印同层的节点,而是优先打印同一条路径上的节点
    我们尝试使用bfs广度优先,即可发现符合题意

    /**
     * Definition for a binary tree node.
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     * };
     */
    class Solution {
    public:
        vector<int> ans;
    
        void bfs(TreeNode* root){
            if(root == NULL) return;
            queue<TreeNode*> q;
            q.push(root);
    
            while(!q.empty()){
                TreeNode* p = q.front(); q.pop();      
                ans.push_back(p->val);
    
                if(p->left != NULL) q.push(p->left);
                if(p->right != NULL) q.push(p->right);
            }
    
        }
    
        vector<int> levelOrder(TreeNode* root) {
            bfs(root);
            return ans;
        }
    };
    作 者: itdef
    欢迎转帖 请保持文本完整并注明出处
    技术博客 http://www.cnblogs.com/itdef/
    B站算法视频题解
    https://space.bilibili.com/18508846
    qq 151435887
    gitee https://gitee.com/def/
    欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
    如果觉得不错,欢迎点赞,你的鼓励就是我的动力
    阿里打赏 微信打赏
  • 相关阅读:
    android broadcast小结
    初学设计模式【7】单例模式——sington
    android之Service总结
    现代软件开发实现六面体
    牛顿迭代法求根
    实现顺序表的各种基本运算
    公共的分页类,包含jsp页面
    多项式拟合+高斯消元解方程组
    差商表及牛顿插值
    C#.NET 获取拨号连接 宽带连接
  • 原文地址:https://www.cnblogs.com/itdef/p/14345383.html
Copyright © 2020-2023  润新知