首页 > 其他分享 >剑指Offer 28. 对称的二叉树

剑指Offer 28. 对称的二叉树

时间:2023-08-27 17:45:25浏览次数:43  
标签:左子 return nil Offer 右子 28 dfs 二叉树

题目链接: 剑指Offer 28. 对称的二叉树

题目描述:

请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。

例如,二叉树 [1,2,2,3,4,4,3] 是对称的。

解法思路:

采用递归的方法,依次遍历根节点的左子树和右子树,判断左子树的左子树 与 右子树的右子树是否相等,左子树的右子树 与 右子树的左子树是否相等。

代码:

func isSymmetric(root *TreeNode) bool {
    if root == nil {
        return true
    }
    return dfs(root.Left,root.Right)
}
func dfs(l *TreeNode,r *TreeNode)bool{
    if l== nil && r == nil {
        return true
    }
    if  l == nil || r == nil || l.Val != r.Val {  //注意这里 || 条件的先后顺序,一定是先判空,再判断值是否相等,因为如果先判断值是否相等,对于空指针没有值,就会报空指针异常的错误。
        return false
    }
    return dfs(l.Left,r.Right) && dfs(l.Right,r.Left)
}

标签:左子,return,nil,Offer,右子,28,dfs,二叉树
From: https://www.cnblogs.com/lxing-go/p/17660543.html

相关文章

  • 剑指Offer 26. 树的子结构
    题目链接:剑指Offer26.树的子结构题目描述:输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)B是A的子结构,即A中有出现和B相同的结构和节点值。解法思路:首先这道题很明显是采取递归的形式,整体流程主要分为两步:找到A树上的某个节点与B树的根......
  • 剑指Offer 27. 二叉树的镜像
    题目链接:剑指Offer27.二叉树的镜像题目描述:请完成一个函数,输入一个二叉树,该函数输出它的镜像。解法思路:此题本质上就是一个二叉树遍历的问题:在遍历的过程中,交换左右子树即可。代码:/***Definitionforabinarytreenode.*typeTreeNodestruct{*Valint......
  • 剑指Offer 25. 合并两个排序的链表
    题目链接:剑指Offer25.合并两个排序的链表题目描述:输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。解法思路:在两链表向后遍历的过程中,哪个更小一点,哪个先放在合并后的链表中。最后哪个链表剩余,直接接在合并链表的后面即可。代码:/***Definit......
  • LeetCode.283 移动零
    题目描述给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。请注意 ,必须在不复制数组的情况下原地对数组进行操作。https://leetcode.cn/problems/move-zeroes/description/ 输入:nums=[0,1,0,3,12]输出:[1,3,12,0,0]双指针挪......
  • 剑指Offer 22. 链表中倒数第k个节点
    题目链接:剑指Offer22.链表中倒数第k个节点题目描述:输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。解法思路:快慢指针:慢指针不动,快指针先走k步,然后快慢指针一起向后走,当快指针走到末尾时,慢指针所指的就是倒......
  • kubeadm 安装k8s1.28.x 底层走containerd 容器
    一:k8s1.28.x的概述1.1:k8s1.28.x更新Kubernetesv1.28是2023年的第二个大版本更新,包含了46项主要的更新。而今年发布的第一个版本v1.27有近60项,所以可以看出来,在发布节奏调整后,每个Kubernetes版本中都会包含很多新的变化。其中20个增强功能正在进入Alpha......
  • 「算法与数据结构」梳理6大排序算法 为了offer!
    6种排序如下......
  • [刷题记录Day22]Leetcode二叉树
    No.1题目二叉搜索树的最近公共祖先思路递归法BST特性如何利用?在BST中,公共祖先一定在p、q数值范围的中间利用BST特性定向搜索注意递归遍历一条边和遍历整棵树的写法不同递归分析返回值:节点,参数:当前节点,p,q终止逻辑:发现当前节点为空,则直接返回当前节点;为什么不用判断p......
  • 二叉树的链式存储结构 C++代码实现
    /*二叉树的链式存储结构*/#include<iostream>usingnamespacestd;/*二叉链表的定义*/typedefstructBiTNode{chardata;structBiTNode*lchild,*rchild;}BiTNode;typedefBiTNode*BiTree;//*************************************************......
  • 二叉树用顺序表实现 C++代码实现
    /*二叉树用顺序表实现*/#include<iostream>usingnamespacestd;/*完全二叉树顺序表的定义*/#defineMAX_BITREE_SIZE100typedefintSqBiTree[MAX_BITREE_SIZE];/*创建一个二叉树顺序表*/voidCreateBiTree(SqBiTree&T){inti;cout<<"输入元素个数:";......