题目描述
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
解题思路
用队列来实现:
从根节点开始,每次打印一个节点都判断该节点是否有子节点,如果有则放在队列末端;取出队列最前面的节点,重复1直至队列为空。
/*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> treelist;if(root==NULL){return treelist;}queue<TreeNode*> deque_data;deque_data.push(root);while(deque_data.size()!=0){TreeNode* tmp = deque_data.front();deque_data.pop();treelist.push_back(tmp->val);if(tmp->left) deque_data.push(tmp->left);if(tmp->right) deque_data.push(tmp->right);}return treelist;}};