2025年--Lc224--100. 相同的树(递归,dfs,带测试用例)-Java版
1.题目


2.思路
(1)考虑两棵树都是null的情况。
(2)考虑两棵树其中1棵树是null的情况。
(3)考虑两棵树一棵是null,一棵树非null的情况。
(4)调用方法递归遍历(p树的左孩子节点,q树的左孩子节点)&&(p树的右孩子节点,q树的右孩子节点。
(5)其他情况直接返回false;
3.代码实现
方法1:带测试用例
class TreeNode
{int val;TreeNode left;TreeNode right;TreeNode(){};TreeNode(int val){this.val=val;}TreeNode(int val,TreeNode left,TreeNode right){this.val=val;this.left=left;this.right=right;}}public class isSameTree {public boolean isSame(TreeNode p,TreeNode q){if(p==null&&q==null)//判断结构:两棵树都为null{return true;}if(p==null||q==null)//判断结构:其中一棵树为null{return false;}if(p.val!=q.val)//判断值:两棵树的值{return false;}return isSame(p.left,q.left)&&isSame(p.right,q.right);}public static  void main(String[] args){TreeNode proot=new TreeNode(1);proot.left=new TreeNode(2);proot.right=new TreeNode(3);TreeNode qroot=new TreeNode(1);qroot.left=new TreeNode(2);qroot.right=new TreeNode(3);isSameTree test=new isSameTree();boolean flag=test.isSame(proot,qroot);System.out.println(flag);}}方法2:不带测试用例
/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {public boolean isSameTree(TreeNode p, TreeNode q) {if(p==null&&q==null){return true;}else if(p==null||q==null){return false;}else if(p.val!=q.val){return false;}else{if(isSameTree(p.left,q.left)&&isSameTree(p.right,q.right)){return true;}}return false;}
}
