给定两个二叉树,编写一个函数来检验它们是否相同。
如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。
示例 1:
输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3] 输出: true
示例 2:
输入: 1 1 / \ 2 2 [1,2], [1,null,2] 输出: false
示例 3:
输入: 1 1 / \ / \ 2 1 1 2 [1,2,1], [1,1,2] 输出: false
public bool IsSameTree(TreeNode p, TreeNode q) { //边界,递归到叶节点的子节点 if(p == null && q == null) return true; //安全判断的同时也可以判断是否相同,保证p和q都不为空 if(p == null || q == null) return false; bool left = IsSameTree(p.left,q.left);//递归对比每一个左子树 bool right = IsSameTree(p.right,q.right);//递归对比每一个右子树 //结合每一个左子树和右子树的对比结果,还有根节点的对比 return left && right && (p.val == q.val); } //一次过,这是我没想到的,哈哈哈。