zoukankan      html  css  js  c++  java
  • leecode第一百零一题(对称二叉树)

    /**
     * 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:
        void digui(TreeNode* root_a,TreeNode* root_b,bool &result){  
            if(root_a==NULL&&root_b==NULL)//先看看是否都是NULL
                return;
            if((root_a==NULL&&root_b!=NULL)||
               (root_a!=NULL&&root_b==NULL)||
               (root_a->val!=root_b->val))//如果两边只有一边是NULL或者两边值不等,就返回不行
            {
                result=false;
                return;
            }
                
            
            digui(root_a->left,root_b->right,result);
            if(!result)//我想早点返回
                return;
            digui(root_a->right,root_b->left,result);
        }
        
        bool diedai(TreeNode* root)
        {
            queue<TreeNode*> temp;//使用队列结构
            temp.push(root);
            temp.push(root);
            bool result=true;
            while(!(temp.empty())&&result)//停止条件:队列为空或有不满足条件的时候
            {
                TreeNode* node_a=temp.front();//提取头两个节点
                temp.pop();
                TreeNode* node_b=temp.front();
                temp.pop();
                
                if(node_a==NULL&&node_b==NULL)//检查两个节点是否同时为NULL
                    continue;
                else if(node_a==NULL||node_b==NULL)
                {
                    result=false;
                    continue;
                }
                else if(node_a->val!=node_b->val)//检查两个节点值是否相等
                    result=false;
                
                temp.push(node_a->left);//然后吧左右孩子分别对应压入队列
                temp.push(node_b->right);
                temp.push(node_a->right);
                temp.push(node_b->left);
            }
            return result;
        }
        
        bool isSymmetric(TreeNode* root) {
            //diedai
            return diedai(root);
            //digui 
            bool result=true;
            digui(root,root,result);
            return result;
        }
    };

    分析:

    还是得动脑子、

  • 相关阅读:
    echarts中label上下两行展示
    vue中去掉地址栏中的#
    vue中登录超时跳转到登录页面设置拦截器
    在table中,tbody没有充满整个table
    vant中dialog的使用
    水位波纹动画兼容ie8
    在vue中使用XLSX导出表格
    elementUI 选择开始结束日期加限制
    element table 合并同类项并输出后台返回数据
    将后台返回的月份201810,201809转换成正常的9月10月
  • 原文地址:https://www.cnblogs.com/CJT-blog/p/11216677.html
Copyright © 2011-2022 走看看