编程练习
题目:请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
思路:很容易想到递归,但是要注意,这个地方的递归不能单单只考虑一个棵树的左右子节点是否值相同,而应该考虑的是他们的他们的子树是否对称。
要判断两个节点的子树是否对称,比如根节点有两个子节点a,b,且a,b各自都含有左右子节点。则为了对称,必须在a与b的值相等的基础上使得a的左孩子与b的右孩子对称,且a的右孩子与b的左孩子对称,这是对称二叉树的最小模型。所以应该递归的是这种形式的函数,即输入两棵树,判断两棵树是否对称。然后再调用该函数判断根节点的左右子树是否对称即可。
java代码如下:
1 | public class TreeIsSymmetrical { |