剑指offer:从上往下打印二叉树
class Solution{ public: vector<int> PrintFromTopToBottom(TreeNode* root){ if(root == nullptr) return vector<int>(); queue <TreeNode*> q; q.push(root); vector<int> result; TreeNode* node =nullptr; while(!q.empty()){ node = q.front(); if(node->left) q.push(node->left); if(node->right) q.push(node->right); result.push_back(node->val); q.pop(); } return result; } };
先判断二叉树为空否,借助队列q,把二叉树的根节点压入队列,定义队列的指针node,在定义个最后输出的数组。当队列不为空,node指针往前走,如果它有左子树,把值放入队列,右子树也同理,q.pop()出队列,因为先进先出,然后把node指针指的值全放入最后的result中,这时result里的值就是顺序的二叉树排序。
#剑指offer#