zoukankan      html  css  js  c++  java
  • 25.判断翻转等价二叉树

    /**
     * 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 {
        int n,ans=1;
    public:
        void dfs(TreeNode* root){
            if(!root) return;
            if(!root->left&&!root->right){return;}
            if(root->left&&!root->right){dfs(root->left);return;}
            if(!root->left&&root->right){root->left=root->right;root->right=NULL;dfs(root->left);return;}
            if(root->left->val>root->right->val){
                swap(root->left,root->right);
            }
            dfs(root->left);
            dfs(root->right);
        }
        void judge(TreeNode* root1,TreeNode* root2){
            if((root1==NULL&&root2!=NULL)||(root1!=NULL&&root2==NULL)){ans=0;return;}
            if(!root1) return;
            if(root1->val!=root2->val){ans=0;return;}
            judge(root1->left,root2->left);
            judge(root1->right,root2->right);
        }
        bool flipEquiv(TreeNode* root1, TreeNode* root2) {
            //转成左偏树,
            n=0;
            dfs(root1);
            int a1=n;
            n=0;
            dfs(root2);
            if(a1!=n) return 0;
            judge(root1,root2);
            return ans;
        }
    };

    注意翻转后进行单枝递归,并return

  • 相关阅读:
    将字符数组写到字符串
    两种比较不错的密码修改方案
    数组的应用 结构类型 使用深复制和浅复制 显示员工信息
    字符串处理技巧
    uva 1339
    11039
    uva 11636
    Uva401Palindromes
    poj2524-Ubiquitous Religions
    Poj1611The Suspects
  • 原文地址:https://www.cnblogs.com/apo2019/p/13406283.html
Copyright © 2011-2022 走看看