当前位置:   article > 正文

二叉树的层次遍历(分层输出)_层次输出

层次输出

题目描述
  给定一个二叉树,返回该二叉树层序遍历的结果,(从左到右,一层一层地遍历)
例如:
给定的二叉树是{3,9,20,#,#,15,7}
在这里插入图片描述
该二叉树层序遍历的结果是

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

分析

  • 二叉树的层次遍历可以用 BFS 来实现,使用一个队列 queue 来实现
  • 要区分每一层节点的个数,可以考虑每次访问时,访问同一层的所有元素,将下一层的所有元素放入队列(使用 size 函数来计算一层节点数)

程序设计

/**
 * struct TreeNode {
 *	int val;
 *	struct TreeNode *left;
 *	struct TreeNode *right;
 * };
 */

class Solution {
public:
    vector<vector<int> > levelOrder(TreeNode* root) {
        // write code here
        vector<vector<int> > res;
        queue<TreeNode*> q;
        if (root == NULL) return res;
        q.push(root);
        vector<int> v;
        while(!q.empty()){
            v.clear();
            
            // 将同一层的节点全部出队
            int size = q.size();
            while (size--){
                TreeNode* temp = q.front();
                v.push_back(temp->val);
                if (temp->left) q.push(temp->left);		// 下一层所有节点入队
                if (temp->right) q.push(temp->right);
                q.pop();
            }
            res.push_back(v);	// 存储当前层的节点输出
        }
        return res;
    }
};
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/正经夜光杯/article/detail/846520
推荐阅读
相关标签
  

闽ICP备14008679号