给定两个二叉树,判断它们是否相同
程序员文章站
2022-05-16 10:09:43
...
题目网址:https://leetcode-cn.com/problems/same-tree/
思路如下
1.如果两棵树都是空树,直接返回true
2.一棵树为空一棵树不为空,返回false
3.如果都不为空树
a)比较根节点的值是否相同,如果不相同返回false
b)递归比较左子树和比较右子树是否相同
大事化小
判定两棵树是否相同=> 比较根节点是否相同+比较左子树右子树是否相同
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
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 false;
}
return isSameTree(p.left,q.left) && isSameTree(p.right,q.right);
}
}
这里的三个逼近条件需要着重思考一下
比较两棵树是否相等
1.如果都为空,返回true,在梦境最后一层也将待着任务true返回
2.如果一个为空,一个不为空
即一个有子树一个没有子树,带着任务F返回上一层梦境
3.判断完上面两个条件后,判断第三个,即访问,判断两个值是否相等,相等的话递归遍历左子树,递归遍历右子树
上一篇: OC-编辑cell中的textview时,获取当前所在行
下一篇: 文本框中限制输入