您的位置:首页 > 编程语言 > Java开发

leetcode解题之101# Symmetric Tree Java版(对称树)

2017-03-13 19:20 246 查看
101. Symmetric Tree

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

For example, this binary tree [1,2,2,3,4,4,3] is symmetric:

1

/ \

2 2

/ \ / \

3 4 4 3

But the following [1,2,2,null,3,null,3] is not:

1

/ \

2 2

\ \

3 3

给定一棵树,判断它是否是对称的。即树的左子树是否是其右子树的镜像。

使用递归进行求解,先判断左右子结点是否相等,不等就返回false,

相等就将左子结点的左子树与右子结果的右子结点进行比较操作,

同时将左子结点的左子树与右子结点的左子树进行比较,只有两个同时为真是才返回true,否则返回false。

/**
* Definition for a binary tree node.
* public class TreeNode {
*     int val;
*     TreeNode left;
*     TreeNode right;
*     TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public boolean isSymmetric(TreeNode root) {
if (root == null)
return true;
return isSame(root.left, root.right);
}
private boolean isSame(TreeNode left, TreeNode right) {
if (left == null && right == null)
return true;
if (left != null && right == null)
return false;
if (left == null && right != null)
return false;
return left.val == right.val && isSame(left.left, right.right) && isSame(left.right, right.left);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息