思路:递归。
null也是tree。
null tree
(definition)
Definition: (1) A tree which is empty. (2) A tree whose leaf nodes all have a null value.
https://xlinux.nist.gov/dads/HTML/nulltree.html
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; } } }
Iterative:
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution { public boolean isSameTree(TreeNode p, TreeNode q) { if(q==null&&p==null)return true; if(q==null||p==null)return false; Stack<TreeNode> p1=new Stack<>(); Stack<TreeNode> q1=new Stack<>(); p1.push(p); q1.push(q); while(!p1.isEmpty()&&!q1.isEmpty()){ TreeNode r1=p1.pop(); TreeNode r2=q1.pop(); if(r1.val!=r2.val)return false; if(r1.left!=null&&r2.left!=null){ p1.push(r1.left); q1.push(r2.left); }else{ if(r1.left!=null&&r2.left==null)return false; if(r1.left==null&&r2.left!=null)return false; } if(r1.right!=null&&r2.right!=null){ p1.push(r1.right); q1.push(r2.right); }else{ if(r1.right!=null&&r2.right==null)return false; if(r1.right==null&&r2.right!=null)return false; } } if(!p1.isEmpty()&&q1.isEmpty())return false; if(p1.isEmpty()&&!q1.isEmpty())return false; return true; } }