首页 > 其他分享 >对称二叉树(递归)

对称二叉树(递归)

时间:2024-12-23 20:44:56浏览次数:4  
标签:right TreeNode 递归 nullptr return 二叉树 对称 root left

给你一个二叉树的根节点 root , 检查它是否轴对称。

 

示例 1:

输入:root = [1,2,2,3,4,4,3]
输出:true

示例 2:

输入:root = [1,2,2,null,3,null,3]
输出:false

 

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    bool fun(TreeNode* node1,TreeNode* node2){
        //类似于root的判断逻辑
        if(node1==nullptr&&node2==nullptr) return true;
        if(node1==nullptr||node2==nullptr) return false;
        //node1与node2均不为空,比较值,递归
        if(node1->val == node2->val){
            bool res = true;
            res = res&&fun(node1->left,node2->right);
            res = res&&fun(node1->right,node2->left);
            return res;
        }
        else{
            return false;
        }
    }
    bool isSymmetric(TreeNode* root) {
        //特殊情况处理
        if(root==nullptr) return true;
        if(root->left==nullptr&&root->right==nullptr) return true;
        if(root->left==nullptr||root->right==nullptr) return false;
        //这样确保了左右子树不为空
        return fun(root->left,root->right);
    }
};

 

标签:right,TreeNode,递归,nullptr,return,二叉树,对称,root,left
From: https://www.cnblogs.com/yueshengd/p/18624977

相关文章

  • 翻转二叉树(递归)
    给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 示例1:输入:root=[4,2,7,1,3,6,9]输出:[4,7,2,9,6,3,1]示例2:输入:root=[2,1,3]输出:[2,3,1]示例3:输入:root=[]输出:[]/***Definitionforabinarytreenode.*structTreeNode{*......
  • 数据结构与算法 - 排序 #直接插入排序 #希尔排序 #直接选择排序 #堆排序 #冒泡排序 #
    文章目录前言一、插入排序(一)、直接插入排序1、思路2、参考代码:3、复杂度计算:(二)、希尔排序1、思路2、参考代码:3、时间复杂度计算:二、选择排序(一)、直接选择排序1、思路2、参考代码3、时间复杂度计算(二)、堆排序三、交换排序(一)、冒泡排序(二)、快速......
  • 二叉树的最大深度(递归)
    给定一个二叉树 root ,返回其最大深度。二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例1: 输入:root=[3,9,20,null,null,15,7]输出:3示例2:输入:root=[1,null,2]输出:2 /***Definitionforabinarytreenode.*structTree......
  • 二叉树的中序遍历(递归/栈)
    给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。 示例1:输入:root=[1,null,2,3]输出:[1,3,2]示例2:输入:root=[]输出:[]示例3:输入:root=[1]输出:[1]方法1:递归/***Definitionforabinarytreenode.*structTreeNode{*intval;*......
  • 【递归,搜索与回溯算法 & 综合练习】深入理解暴搜决策树:递归,搜索与回溯算法综合小专题(
       优美的排列  题目解析     算法原理     解法 :暴搜     决策树   红色剪枝:用于剪去该节点的值在对应分支中,已经被使用的情况,可以定义一个check[]紫色剪枝:perm[i]不能够被i整除,i不能够被perm[i]整除,此时分......
  • 【102. 二叉树的层序遍历 中等】
    题目:给你二叉树的根节点root,返回其节点值的层序遍历。(即逐层地,从左到右访问所有节点)。示例1:输入:root=[3,9,20,null,null,15,7]输出:[[3],[9,20],[15,7]]示例2:输入:root=[1]输出:[[1]]示例3:输入:root=[]输出:[]提示:树中节点数目在范围[0,2000]内-10......
  • c语言 递归 递推
    1、递推与递归https://blog.csdn.net/hitwhylz/article/details/9492159?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-1-9492159-blog-140367622.235^v43^pc_blog_bottom_relevance_base6&spm=1001.2101.3001.4242.2&......
  • K 个一组翻转链表(逆置链表+递归)
    给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。 示例1:输入:head......
  • 【递归,搜索与回溯算法 & 综合练习】深入理解暴搜决策树:递归,搜索与回溯算法综合小专题(
       找出所有子集的异或总和再求和  题目解析     算法原理     解法     决策树   这种决策使得每一次递归都是有效的递归,每一个节点都是最终的结果,所以这棵决策树是不用剪枝的,也没有递归出口的;    注意   ......
  • 101.对称二叉树
    varisSymmetric=function(root){if(!root)returntrue;returnisMirror(root.left,root.right);};functionisMirror(left,right){if(!left&&!right)returntrue;if(!left||!right)returnfalse;if(left.val!==right.val)......