zoukankan      html  css  js  c++  java
  • 45. 之字形打印二叉树

    默认开始行是从左向右,第二行相反,第三行与第二行相反。。。。

    在44题基础上修改

    /**
     * Definition for a binary tree node.
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     * };
     */
    class Solution {
    public:
        vector<vector<int>> printFromTopToBottom(TreeNode* root) {
            
            vector<vector<int>> res;
            vector<int> level;//每一层的矩阵
            if(!root)  return res;
            
            //定义一个辅组队列
            queue<TreeNode*> q;
            q.push(root);//初始化res
            q.push(nullptr); //root层的标识符
            
            bool zig = false ;
            
            while(q.size())
            {
                TreeNode* t = q.front();
                //cout<< "t1=" << q.front() <<' ' << "b1=" << q.back() << "size1=" << q.size() << endl;
                q.pop();
                //cout<< "t2=" << q.front() <<' ' << "b2=" << q.back() << "size2=" << q.size() << endl;
                //cout<< "t="<< t << endl;
                
                if(!t)//遍历完了一整行 
                {
                    //if(level.empty())  break;含义:
                    //下一层已经没有节点了,遍历所有点了。
                    if(level.empty())  break;
                    if(zig) reverse(level.begin(),level.end());
                    res.push_back(level); 
                    level.clear();
                    q.push(nullptr);//一层结束后,在后面加上null
                    zig = !zig;
                    continue;//跳出if循环,重新从while开始执行
                }
                //否则要进行扩展
                level.push_back(t->val);
                
                //cout<< "t->val="<< t->val << endl;
                
                if(t->left) q.push(t->left);    //  t->left ==NULL,这句不执行
                if(t->right) q.push(t->right);  //  ==NULL,这句不执行
                
                //cout<< "t3=" << q.front() <<' ' << "b2=" << q.back() << endl;
                //cout<< "size=" << q.size() << endl;
            }
            
            return res;
        }
    };

    红色部分为修改代码

    带女朋友搬家新家条件不好,累到女朋友了,让女朋友受苦了,特此明志:每天学习,明年这个时候(20190812)让女朋友住上大房子,永远年轻,永远热泪盈眶,很多人都是这样,他们都把自己当成身在梦中一样,浑浑噩噩地过日子,只有痛苦或爱或危险可以让他们重新感到这个世界的真实。
  • 相关阅读:
    用JS获取地址栏参数的方法(超级简单)
    js全选
    梦幻西游手游三界奇缘答题 文字解答
    父级div height:auto无效解决办法
    DropDownList赋值,绑定,传值
    《梦幻西游》手游人宠抗防修炼点修消耗表
    使客户端的控件ID保持不变,不受母版页的影响
    无法读取项目文件 .csproj
    七天学会ASP.NET MVC (一)——深入理解ASP.NET MVC
    MVC控件解析
  • 原文地址:https://www.cnblogs.com/make-big-money/p/12312675.html
Copyright © 2011-2022 走看看