认识树 相同的树

2020-06-16 15:05 更新

题目

难度:简单

通过这一题可以很好地了解java中关于TreeNode的方法,了解树的概念。

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

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

示例 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

解法一:递归

  1. /*
  2. **by wulara
  3. */
  4. class Solution {
  5. public boolean isSameTree(TreeNode p, TreeNode q) {
  6. if(p==null || q==null) return p==q;
  7. if (p.val!=q.val ) return false;
  8. return isSameTree(p.left,q.left)&&isSameTree(p.right,q.right);
  9. }
  10. }

解法二:Python

利用 and/or 简化python逻辑表达式,代码结构更像pythoner

  1. ## Definition for a binary tree node.
  2. ## class TreeNode(object):
  3. ## def __init__(self, x):
  4. ## self.val = x
  5. ## self.left = None
  6. ## self.right = None
  7. class Solution(object):
  8. def isSameTree(self, p, q):
  9. """
  10. :type p: TreeNode
  11. :type q: TreeNode
  12. :rtype: bool
  13. """
  14. def dfs(p, q, flag):
  15. if flag:
  16. if not p or not q:
  17. flag = not p and not q or False
  18. else:
  19. flag = p.val == q.val and dfs(p.left, q.left, flag) and dfs(p.right, q.right, flag)
  20. return flag
  21. return dfs(p, q, True)
以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号