题目描述
思路:
如果一个树的左子树与右子树镜像对称,那么这个树是对称的。
因此,该问题可以转化为:两个树在什么情况下互为镜像?
如果同时满足下面的条件,两个树互为镜像:
它们的两个根结点具有相同的值
每个树的右子树都与另一个树的左子树镜像对称
解法
import java.util.ArrayList;
import java.util.List;
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) {
List<Integer> list = new ArrayList<>();
zxbl(root, list);
for (int i=0;i<list.size()/2;i++){
if (list.get(i)!=list.get(list.size()-i-1));
return false;
}
return true;
}
//中序遍历
private void zxbl(TreeNode root, List<Integer> list) {
if (root.left!=null){
zxbl(root.left,list);
}
list.add(root.val);
if (root.right!=null){
zxbl(root.right,list);
}
}
}