leetcode------Same Tree

标题:

Same Tree
通过率:42%
难度简单

Given two binary trees, write a function to check if they are equal or not.

Two binary trees are considered equal if they are structurally identical and the nodes have the same value.

 

这道题是自己的失误造成了第一次提交的失败,原因是题目没有看清楚。然后是对于二叉树的相同没有弄明白,如果想用对比节点相同的话还是要重写equals方法,显然本题是不能用的,那么就是节点的值比较,左右子树递归,具体步骤如下:

1、p、q两树均为空则返回true

2、p、q两树有且仅有一个树为空则返回false

3、p、q两树的节点值相同,则继续进行递归。

4、其他情况全部返回false

 

对于继续递归,则要用 (p.right,q.right)&&(p.left,q.left)两树左右都相同才能是完全的相同。这个题目直接看代码则能看出算法的步骤

 1 public class Solution {
 2     public boolean isSameTree(TreeNode p, TreeNode q) {
 3         return vistree(p,q);
 4     }
 5     public boolean vistree(TreeNode p,TreeNode q){
 6         if(p==null&&q==null) return true;
 7         if(p==null&&q!=null) return false;
 8         if(p!=null&&q==null) return false;
 9         if(p.val==q.val){
10             return vistree(p.right,q.right)&&vistree(p.left,q.left);
11         }
12         else return false;
13     }
14 }

 

转载于:https://www.cnblogs.com/pkuYang/p/4158414.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值