当前位置:首页 > 编程笔记 > 正文
已解决

LeetCode算法递归类——剑指 Offer 28. 对称的二叉树

来自网友在路上 164864提问 提问时间:2023-09-19 10:52:47阅读次数: 64

最佳答案 问答题库648位专家为你答疑解惑

目录

剑指 Offer 28. 对称的二叉树

题解:

代码:

运行结果:


剑指 Offer 28. 对称的二叉树

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

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

    1
   / \
  2   2
 / \ / \
3  4 4  3

但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:

    1
   / \
  2   2
   \   \
   3    3

示例 1:

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

示例 2:

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

限制:

0 <= 节点个数 <= 1000

题解:

  • 首先判断根节点是否为空,若为空则返回true。
  • 接着调用fun方法,传入根节点的左子节点和右子节点进行判断。

fun方法的逻辑是:

  • 如果A和B都为空,则返回true;
  • 如果A和B有一个为空或者值不相等,则返回false;
  • 否则递归判断A的左子节点和B的右子节点是否对称,以及A的右子节点和B的左子节点是否对称。
  • 最终,通过递归层层返回结果,得出是否对称的判断结果。

时间复杂度为O(n)

代码:

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode(int x) { val = x; }* }*/
class Solution {public boolean isSymmetric(TreeNode root) {if(root==null) return true;return fun(root.left,root.right);}public boolean fun(TreeNode A,TreeNode B){if(A==null&&B==null) return true;if(A==null||B==null||A.val!=B.val) return false;return fun(A.left,B.right)&&fun(A.right,B.left);}
}

运行结果:

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"LeetCode算法递归类——剑指 Offer 28. 对称的二叉树":http://eshow365.cn/6-9274-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!