JZ22 从上往下打印二叉树
题目描述
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
思路
其实这就是一个树的宽度优先遍历,可以借助队列来完成
- 定义一个队列,先把根节点放进去(注意是把根节点放进去,不是把根节点的值放进去,如果是放值的话之后就找不到它的左右子树了)
- 对这个队列进行弹出操作,每弹出一个就打印并分别把它的左右节点放进去(注意对左右节点进行判断是否为空)
- 上述循环直至队列为空
!!!注意:凡是链表,树的问题,一定要考虑为空的情况,这道题一开始没考虑,会提示有段错误!!!
代码
class Solution {
public:
vector<int> PrintFromTopToBottom(TreeNode* root) {
queue<TreeNode*> Queue; //辅助队列
TreeNode* res;
vector<int> Result;
Queue.push(root);
if(root==NULL)
return Result;
while(!Queue.empty())
{
res=Queue.front();
Queue.pop();
if(res->left!=NULL)
Queue.push(res->left);
if(res->right!=NULL)
Queue.push(res->right);
Result.push_back(res->val);
}
return Result;
}
};