題目:
從上到下打印出二叉樹的每一個節點,同一層的節點按照從左到右的順序打印。如下打印出來的結果爲[3, 9, 20, 16, 15, 7]
。
3
/ \
9 20
/ / \
16 15 7
解析:
利用隊列的先入先出思想來求解,先把根節點放入隊列中的隊首,如果有子結點,則把子結點依次(先左兒子後右兒子)放入隊尾,然後彈出隊首元素。接下來重複前面的操作,直到隊列元素全部彈出。<知識點:層序遍歷>
參考答案:
/***
* typedef struct node{
* int val;
* struct node *left;
* struct node *right;
* }TreeNode;
*/
class Solution{
public:
vector<int> levelOrder(TreeNode* root){
vector<int> arr;
if(nullptr == root)
return arr;
queue<TreeNode *> que;
que.push(root);
while(!que.empty()){
TreeNode *Node = que.front();
arr.push_back(Node -> val);
que.pop();
if(Node -> left)
que.push(Node -> left);
if(Node -> right)
que.push(Node -> right);
}
return arr;
}
};