给出两个二叉树,请写出一个判断两个二叉树是否相等的函数。
判断两个二叉树相等的条件是:两个二叉树的结构相同,并且相同的节点上具有相同的值。
解题思路:
1.如果两个都是空树,返回真
2.如果有一棵是空树,返回假
3.如果对应结点值不同,返回假
4.递归左右子树
import java.util.*;
/*
* public class TreeNode {
* int val = 0;
* TreeNode left = null;
* TreeNode right = null;
* }
*/
public class Solution {
/**
*
* @param p TreeNode类
* @param q TreeNode类
* @return bool布尔型
*/
public boolean isSameTree (TreeNode p, TreeNode q) {
if(p==null&&q==null) return true;
if(p==null||q==null) return false;
if(p.val!=q.val) return false;
return (isSameTree(p.left,q.left)&&isSameTree(p.right,q.right));
}
}
给定一棵二叉树,判断是否是自身的镜像(即:是否对称)
解题思路:
1.如果两个都是空树,返回真
2.如果有一棵是空树,返回假
3.如果对应结点值不同,返回假
4.递归左右子树,相应的左节点和右节点对应(和判断是否为同一个树相反)
import java.util.*;
/*
* public class TreeNode {
* int val = 0;
* TreeNode left = null;
* TreeNode right = null;
* }
*/
public class Solution {
/**
*
* @param root TreeNode类
* @return bool布尔型
*/
public boolean isSymmetric (TreeNode root) {
return check(root,root);
}
public boolean check(TreeNode p,TreeNode q ){
if(p==null && q==null) return true;
if(p==null || q==null) return false;
if(p.val!=q.val) return false;
return (check(p.left,q.right)&&check(p.right,q.left));//判断是否对称
}
}