Problem: 101. 对称二叉树
看到这个题,想到的解题方法是使用递归实现。判断二叉树是否对称,需要判断根节点的左子树和右子树是否对称。所以从根节点开始,递归判断左子树的左节点是否和右子树的右节点是否相同,左子树的右节点和右子树的左节点是否相同。如下图所示:
从根节点开始,递归判断判断左子树的左节点是否和右子树的右节点是否相同,左子树的右节点和右子树的左节点是否相同。如果两个节点同时为空,返回true,都不为空的情况下判断val是否相同,相同则调用递归方法进入下一层判断。其他情况返回false
/\*\*
\* Definition for a binary tree node.
\* public class TreeNode {
\* int val;
\* TreeNode left;
\* TreeNode right;
\* TreeNode() {}
\* TreeNode(int val) { this.val = val; }
\* TreeNode(int val, TreeNode left, TreeNode right) {
\* this.val = val;
\* this.left = left;
\* this.right = right;
\* }
\* }
\*/
class Solution {
public boolean isSymmetric(TreeNode root) {
if(root == null){
return true;
}
return judge(root.left,root.right);
}
public boolean judge(TreeNode l , TreeNode r){
if(l==null && r==null){
return true;
}
if(l!=null && r!=null){
if(l.val == r.val){
return judge(l.left,r.right) && judge(l.right,r.left);
}
}
return false;
}
}
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。