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;
    }
};
全部评论

相关推荐

程序员牛肉:你这简历有啥值得拷打的?在牛客你这种简历一抓一大把,也就是个人信息不一样而已。 关键要去找亮点,亮点啊,整个简历都跟流水线生产出来的一样。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务