一、 题目
从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印。如图所示的二叉树,依次打印出8,6,10,5,7,9,11.
二、解法
步骤 | 操作 | 队列 |
---|---|---|
1 | 打印节点8 | 节点6、节点10 |
2 | 打印节点8 | 节点10、节点5、节点7 |
3 | 打印节点8 | 节点5、节点7、节点9、节点11 |
4 | 打印节点8 | 节点7、节点9、节点11 |
5 | 打印节点8 | 节点9、节点11 |
6 | 打印节点8 | 节点11 |
7 | 打印节点8 |
/*
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) {
deque<TreeNode*> dequeTreeNode;
vector<int> res;
if(!root)
return res;
dequeTreeNode.push_front(root);
while(dequeTreeNode.size())
{
TreeNode* pNode = dequeTreeNode.front();
res.push_back(pNode->val);
dequeTreeNode.pop_front();
if(pNode->left!=nullptr)
dequeTreeNode.push_back(pNode->left);
if(pNode->right!=nullptr)
dequeTreeNode.push_back(pNode->right);
}
return res;
}
};