1. 题目描述

给定两个二叉树,编写一个函数来检验它们是否相同。

如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。

示例 1:

  1. 输入: 1 1
  2. / \ / \
  3. 2 3 2 3
  4. [1,2,3], [1,2,3]
  5. 输出: true

示例 2:

  1. 输入: 1 1
  2. / \
  3. 2 2
  4. [1,2], [1,null,2]
  5. 输出: false

示例 3:

  1. 输入: 1 1
  2. / \ / \
  3. 2 1 1 2
  4. [1,2,1], [1,1,2]
  5. 输出: false

2. 解题思路

这个实际上也没啥好说的就是进行递归遍历两个树对应的节点,看看是否一致,一致的话就直接返回false。

3. 代码实现

  1. /**
  2. * Definition for a binary tree node.
  3. * function TreeNode(val, left, right) {
  4. * this.val = (val===undefined ? 0 : val)
  5. * this.left = (left===undefined ? null : left)
  6. * this.right = (right===undefined ? null : right)
  7. * }
  8. */
  9. /**
  10. * @param {TreeNode} p
  11. * @param {TreeNode} q
  12. * @return {boolean}
  13. */
  14. var isSameTree = function(p, q) {
  15. if(!p && !q){
  16. return true
  17. }
  18. if(p === null || q === null){
  19. return false
  20. }
  21. if(p.val !== q.val){
  22. return false
  23. }
  24. return isSameTree(p.left, q.left) && isSameTree(p.right, q.right)
  25. };

4. 提交结果

100. 相同的树 - 图1