相同的树
难度:简单
题目描述
给你两棵二叉树的根节点 p
和 q
,编写一个函数来检验这两棵树是否相同。
如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。
示例1
输入: p = [1,2,3], q = [1,2,3]
输出: true
示例2
输入: p = [1,2], q = [1,null,2]
输出: false
示例3
输入: p = [1,2,1], q = [1,1,2]
输出: false
题解
依据题意得,本体需要使用回溯法解题,基本思想就是遍历每个节点之后对比
想法代码
using System.Runtime.Intrinsics.Arm;
public class TreeNode
{
public int val;
public TreeNode left;
public TreeNode right;
public TreeNode(int val = 0, TreeNode left = null, TreeNode right = null)
{
this.val = val;
this.left = left;
this.right = right;
}
}
class Solution
{
public static void Main(String[] args)
{
TreeNode p = new TreeNode(1)
{
left = new TreeNode(2),
right = new TreeNode(3)
};
TreeNode q = new TreeNode(1)
{
left = new TreeNode(2),
right = new TreeNode(1)
};
Solution solution = new Solution();
Console.WriteLine(solution.IsSameTree(p,q));
}
public bool IsSameTree(TreeNode p, TreeNode q)
{
if (p == null && q == null)
{
return true;
}
if (p == null || q == null)
{
return false;
}
return p.val == q.val && IsSameTree(p.left,q.left) && IsSameTree(p.right,q.right);
}
}