leetcode------Symmetric Tree

本文介绍了一种判断二叉树是否对称的方法,通过递归对比左右子树的值来实现。具体步骤包括:检查左右子树是否为空,对比当前节点的值,最后递归检查左右子树的对称性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

标题:Symmetric Tree
通过率:31.1%
难度:简单

 

Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).

For example, this binary tree is symmetric:

 1
/ \
2 2
/ \ / \
3 4 4 3
But the following is not:
1
/ \
2 2
\ \
3 3
Note:
Bonus points if you could solve it both recursively and iteratively.

confused what "{1,#,2,3}" means? > read more on how binary tree is serialized on OJ.

这几天在忙期末考试,实在是抽不出来时间去刷题,今天随便打开了一道,吓尿了,题目都好长啊,我看了半天没有看懂他的解释,我还是按照自己的理解去写吧,写了三道树的题目,我感觉树的题目千篇一律,就是递归后怎么去处理了。看了这道题目,就是判断这个树是不是个完全对称树,我想了下,递归的时候就是就让树同时迭代左右,然后根据对称性,我画一个最简单的图:

上图的节点的数字是节点的编号,不是值,把树成左右判断。相当于分成了 2,3 然后就是2的右边要和3的左边相同(即5,6要相同),2的左边要和3的右边相同(即4,7要相同),以此类推,

如果中间有单个空或者值不同就返回false,

直接读递归的代码,能加深理解,具体的代码如下:比较简洁:

 1 /**
 2  * Definition for binary tree
 3  * public class TreeNode {
 4  *     int val;
 5  *     TreeNode left;
 6  *     TreeNode right;
 7  *     TreeNode(int x) { val = x; }
 8  * }
 9  */
10 public class Solution {
11     public boolean isSymmetric(TreeNode root) {
12         if(root==null) return true;
13         return issame( root.left, root.right);
14     }
15     public boolean issame(TreeNode left,TreeNode right){
16         if(left==null&&right==null) return true;
17         if(left!=null &&right==null) return false;
18         if(left==null &&right !=null)return false;
19         if(left.val!=right.val) return false;
20         else 
21         return issame(left.right,right.left)&&issame(left.left,right.right);
22     }
23 }

 

转载于:https://www.cnblogs.com/pkuYang/p/4177139.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值