剑指offer—从上往下打印二叉树

来源:互联网 发布:21天阿里云推荐系统 编辑:程序博客网 时间:2024/05/16 11:53

华电北风吹
天津大学认知计算与应用重点实验室
日期:2015/10/3

题目描述
从上往下打印出二叉树的每个节点,同层节点从左至右打印。

解析:这题特别简单,只需要设置一个flag标志为换行符即可。然后广度优先搜索。

/*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)    {        vector<int> v;        if(root==NULL)            return v;        TreeNode * flag=new TreeNode(NULL);        queue<TreeNode*> q;        q.push(root);        q.push(flag);        TreeNode* top;        while(true)        {            top=q.front();            q.pop();            if(top->val==NULL)            {                q.push(top);                top=q.front();                q.pop();                if(top->val==NULL)                {                    break;                }            }            v.push_back(top->val);            if(top->left!=NULL)                q.push(top->left);            if(top->right!=NULL)                q.push(top->right);        }        return v;    }};
0 0