题目描写叙述:
从上往下打印出二叉树的每一个节点。同层节点从左至右打印。
解题思路:
这道题考查二叉树的层次遍历。
对于二叉树的先序遍历、中序遍历、兴许遍历。我们都比較熟悉,用递归方法实现,代码也很easy。
对于层次遍历,我们在实现的时候,须要借助一个队列来辅助。
依次将层次遍历的到的节点压入队列。再从队列中依次取出来打印。
实现代码:
/* 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> result; if(root == nullptr) return result; queue<TreeNode *> queueNode; queueNode.push(root); while(queueNode.size()) { TreeNode *tNode = queueNode.front(); queueNode.pop(); result.push_back(tNode->val); if(tNode->left != nullptr) queueNode.push(tNode->left); if(tNode->right != nullptr) queueNode.push(tNode->right); } return result; } };