[剑指 Offer 32 - I. 从上到下打印二叉树]

54 阅读1分钟

剑指 Offer 32 - I. 从上到下打印二叉树

从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。

  例如:
给定二叉树: [3,9,20,null,null,15,7],

    3
   / \
  9  20
    /  \
   15   7

返回:

[3,9,20,15,7]

二叉树的层次遍历

利用一个队列实现,每访问一个结点将其存储进队列,并从队列头部取出一个节点进行visit

//队列相关操作
queue <TreeNode*> q; //初始化

q.push(item)           //将item压入队列尾部  
q.pop()                //删除队首元素,但不返回  
q.front()              //返回队首元素,但不删除  
q.back()               //返回队尾元素,但不删除  
q.size()               //返回队列中元素的个数  
q.empty()              //检查队列是否为空,如果为空返回true,否则返回false

struct TreeNode {
    int val;
    TreeNode *left;
    TreeNode *right;
};
二叉树的层次遍历
class Solution {
public:
    vector<int> levelOrder(TreeNode* root) {
        queue <TreeNode*> Q;
        vector<int> res;
        if(root) Q.push(root);
        while(!Q.empty()){
            TreeNode* tmp = Q.front();
            Q.pop();
            res.push_back(tmp->val);
            if(tmp->left) Q.push(tmp->left);
            if(tmp->right) Q.push(tmp->right);
        }

        return res;

    }
};