赞
踩
从上到下打印出二叉树的每一个节点,同一层的节点按照从左到右的顺序打印。如下打印出来的结果为[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; } };
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。