题目描述
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
class Solution {
public:
vector<int> PrintFromTopToBottom(TreeNode *root) {
vector<int> vec;
deque<TreeNode *> deq;
int index_tail = 0;
int index_head = 0;
TreeNode* pTemp = NULL;
/* 判断二叉树是否为空 */
if(NULL == root)
{
return vec;
}
/* 先把root节点放入双向队列的头部 */
deq.push_front(root);
while(!deq.empty())
{
/* 取出尾部的节点 */
pTemp = deq.back();
vec.push_back(pTemp->val);
/* 判断左孩子是否为空 */
if(NULL != pTemp->left)
{
/* 从头部插入 */
deq.push_front(pTemp->left);
}
/* 判断右孩子是否为空 */
if(NULL != pTemp->right)
{
/* 从头部插入 */
deq.push_front(pTemp->right);
}
/* pop尾部的节点 */
deq.pop_back();
}
return vec;
}
};