Tree-E-100. Same Tree
时间:20180301
分类:递归、前序遍历、比较大小
1.自己解法
思路:1.实现preSortTree方法,通过递归调用实现二叉树的前序遍历,并返回数组。
2.通过for循环遍历数组进行比较。
不足之处:代码复杂,思路不清晰,不能做到最优,代码渣渣继续加油
public boolean isSameTree(TreeNode p, TreeNode q) {
TreeNode[] arrp = null;
TreeNode[] arrq = null;
TreeNode[] arr = null;
arrp = preSortTree(p,0,arr);
arrq = preSortTree(q,0,arr);
int lenp = arrp.length;
int lenq = arrq.length;
if(lenp != lenq){
return false;
}else{
for(int i =0;i<lenp;i++){
if(arrp[i].val!=arrq[i].val){
return false;
}
}
}
return true;
}
public TreeNode[] preSortTree(TreeNode head, int index,TreeNode[] arr){
if(head == null) {
return null;
}
arr[index++] = head;
preSortTree(head.left, index,arr);
preSortTree(head.right,index,arr);
return arr;
}
}
2.网上解法1
思路:在递归遍历树的时候进行值的比较判断是否相等
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;
}
}
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);
}