方法一: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。