https://leetcode-cn.com/problems/same-tree/description/
①迭代
class Solution {
public boolean isSameTree(TreeNode p, TreeNode q) {
if(p==null||q==null)
{
if(p==null&&q==null) return true;
else return false;
}
boolean cur = true ;
if(p.val!=q.val) cur = false;
boolean next = isSameTree(p.right,q.right)&&isSameTree(p.left ,q.left);
return next&&cur;
}
}
②非迭代版(垃圾代码待优化。。。)
class Solution {
public boolean isSameTree(TreeNode p, TreeNode q) {
if(p==null||q==null)
{
if(p==null&&q==null) return true;
else return false;
}
List<TreeNode> list1 = new ArrayList();
List<TreeNode> list2 = new ArrayList();
list1.add(p);
list2.add(q);
while(!list1.isEmpty()&&!list2.isEmpty())
{
List<TreeNode> list11 = new ArrayList();
List<TreeNode> list22 = new ArrayList();
for(int i=0;i<list1.size();i++)
{
if(list1.get(i).right !=null) list11.add(list1.get(i).right);
else if(list2.get(i).right !=null) return false;
if(list1.get(i).left !=null) list11.add(list1.get(i).left);
else if(list2.get(i).left !=null) return false;
if(list2.get(i).right !=null) list22.add(list2.get(i).right);
else if(list1.get(i).right !=null) return false;
if(list2.get(i).left !=null) list22.add(list2.get(i).left);
else if(list1.get(i).left !=null) return false;
if(list1.get(i).val!=list2.get(i).val) return false;
}
list1 = list11;
list2 = list22;
}
return true;
}
}
最简
class Solution {
public boolean isSameTree(TreeNode p, TreeNode q) {
if(p == null && q == null){
return true;
}
if(p == null || q == null){
return false;
}
return p.val == q.val && isSameTree(p.left, q.left) && isSameTree(p.right, q.right);
}
}