码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-10-05 18:52:56      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:res   子节点   ack   style   打印   实现   off   描述   from   

题目描述

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

解题思路

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

 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;
    }
  
};

 

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

标签:res   子节点   ack   style   打印   实现   off   描述   from   

原文地址:https://www.cnblogs.com/fancy-li/p/11625161.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!