zoukankan      html  css  js  c++  java
  • 【LeetCode & 剑指offer刷题】树题6:28 对称二叉树(101. Symmetric Tree)

    【LeetCode & 剑指offer 刷题笔记】目录(持续更新中...)

    101. Symmetric Tree

     
     
    /**
     * 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:
        bool isSymmetric(TreeNode* root)
        {
            return isMirror(root,root); //从根结点开始     
        }
       
        bool isMirror(TreeNode* t1,TreeNode* t2)//判断两个树是否为镜像关系
        {
           
            //三个递归出口
            if(t1==NULL && t2==NULL) return true;   //两结点同时为空时为true,只有一个为空时为false,均为非空时,比较当前结点值以及左右子树是否为对称的
            else if(t1==NULL || t2==NULL) return false;
            //当前结点值相等,且左结点的左子树和右结点的右子树对称,左结点的右子树和右结点的左子树对称
            return (t1->val == t2->val) && isMirror(t1->left,t2->right) && isMirror(t1->right,t2->left);
        }
    };
     
  • 相关阅读:
    9"边界匹配
    8劈分
    7替换
    5逻辑匹配
    4分组匹配
    3贪婪匹配与勉强匹配
    python多线程之线程传参
    多线程(类的形式)---线程同步
    多线程基础
    Linux----黑马程序员Linux教学视频简记(转载)
  • 原文地址:https://www.cnblogs.com/wikiwen/p/10225817.html
Copyright © 2011-2022 走看看