- 题目:判断两颗二叉树是否一样(结构和值都一样)
- 难度:Easy
- 思路:判断两个树是否一样,首先判断根节点的值是否相等,如果相同,则判断根节点的子树是否相同;而根节点的子树是否相同的判断与前面的判断步骤一样,因此采用递归来实现即可
- 代码:
public class Solution {
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 isSameTree(p.left, q.left) && isSameTree(p.right, q.right);
}else{
return false;
}
}
}
- 题目:判断一颗二叉树是否对称(以根节点为中心,对折二叉树是可以完全重合的)
- 难度:Easy
- 思路:一颗二叉树是否对称,重点在与顶层根节点的两颗子树是否对称(而判断两颗子树是否对称,与判断两个树是否相同类似,只不过判断条件需要稍作调整,具体看代码就明白啦)
- 代码:
public class Solution {
public boolean isSymmetric(TreeNode root) {
if(root == null || (root.left == null && root.right == null)){
return true;
}
return recursion(root.left, root.right);
}
public boolean recursion(TreeNode node1, TreeNode node2){
if(node1 == null && node2 == null){
return true;
}
if(node1 == null || node2 == null){
return false;
}
if(node1.val == node2.val){
return recursion(node1.left,node2.right) && recursion(node1.right, node2.left);
}else{
return false;
}
}
}