/*
* 面试题28:对称的二叉树
* 题目:请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
* 思路:利用递归进行判断,若左子树的左孩子等于右子树的右孩子且左子树的右孩子等于右子树的左孩子,并且左右子树节点的值相等,则是对称的。
*/
public class No28isSymmetrical {
public static void main(String[] args) {
No28isSymmetrical n = new No28isSymmetrical();
TreeNode root = new TreeNode(8);
TreeNode p6 = new TreeNode(6);
TreeNode p66 = new TreeNode(6);
TreeNode p5 = new TreeNode(5);
TreeNode p7 = new TreeNode(7);
TreeNode p55 = new TreeNode(5);
TreeNode p77 = new TreeNode(7);
root.left = p6;
root.right = p66;
p6.left = p5;
p6.right = p7;
p66.left = p77;
p66.right = p55;
System.out.println(n.isSymmetrical(root));
}
boolean isSymmetrical(TreeNode pRoot) {
if (pRoot == null) {
return true;
}
return isCommon(pRoot.left, pRoot.right);
}
private boolean isCommon(TreeNode leftNode, TreeNode rightNode) {
if (leftNode == null && rightNode == null) {
return true;
}
if (leftNode != null && rightNode != null) {
return leftNode.val == rightNode.val && isCommon(leftNode.left, rightNode.right)
&& isCommon(leftNode.right, rightNode.left);
}
return false;
}
}
面试题28:对称的二叉树
最新推荐文章于 2019-07-29 20:07:00 发布