剑指offer 23:从上往下打印二叉树

题目描述

从上往下打印出二叉树的每个节点,同层节点从左至右打印。

解题思路

按照从左往右从上到下的顺序打印节点,需要我们维护一个队列,这个队列放入元素的顺序是访问队头节点(起始先放入根节点),则若当前节点的左右子树非空,则将左右子节点依次放入队尾,对所有节点执行此操作,然后按顺序遍历队列。

 C++代码实现:

/*
struct TreeNode {
    int val;
    struct TreeNode *left;
    struct TreeNode *right;
    TreeNode(int x) :
            val(x), left(NULL), right(NULL) {
    }
};*/
class Solution {
public:
    vector<int> PrintFromTopToBottom(TreeNode* root) {
        vector<int> result;
        //申请一个队列专门放横排的数据
        if (root==NULL){
            return result;
        }
        queue<TreeNode*> que;
        
        que.push(root); 
        while(!que.empty()){
            if(root->left!=NULL){
                que.push(root->left);
            }
            if(root->right!=NULL){
                que.push(root->right); 
            }
            int val=root->val;
            result.push_back(val);
            que.pop();
            root=que.front();
        }
          return result;
    }
  
};

 

posted @ 2019-10-05 17:14  fancy_li  阅读(123)  评论(0编辑  收藏  举报