题解 | #从上往下打印二叉树#

从上往下打印二叉树

http://www.nowcoder.com/practice/7fe2212963db4790b57431d9ed259701

方法一:BFS

  • 题目很简单,从上往下层层遍历并打印节点值即可,用一个队列来存储节点,遍历打印当前节点的值,并将子节点入队。
    class Solution {
    public:
      vector<int> PrintFromTopToBottom(TreeNode* root) {
          queue<TreeNode*> q;
          vector<int> ans;
          if(root==nullptr)
              return {};
          q.push(root);
          while(!q.empty()){
              TreeNode* cur=q.front();
              q.pop();
              ans.push_back(cur->val);
              if(cur->left)
                  q.push(cur->left);
              if(cur->right)
                  q.push(cur->right);
          }
          return ans;
      }
    };

    图解如下:

    图片说明
    图片说明
    图片说明
    图片说明
    图片说明
    图片说明

    复杂度分析:

    时间复杂度:O(n),n为节点数目,遍历每个节点一次。
    空间复杂度:O(n),与每层节点数目的最大值相关,满二叉树的情况下,最大值为(n+1)/2。
全部评论

相关推荐

榕城小榕树:你别说,你还真别说,计算机实习薪资跟这个差不多
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务