zoukankan      html  css  js  c++  java
  • 572. Subtree of Another Tree

    https://leetcode.com/problems/subtree-of-another-tree/#/solutions

    Given two non-empty binary trees s and t, check whether tree t has exactly the same structure and node values with a subtree of s. A subtree of s is a tree consists of a node in s and all of this node's descendants. The tree s could also be considered as a subtree of itself.

    Example 1:
    Given tree s:

         3
        / 
       4   5
      / 
     1   2
    

    Given tree t:

       4 
      / 
     1   2
    

    Return true, because t has the same structure and node values with a subtree of s.

    Example 2:
    Given tree s:

         3
        / 
       4   5
      / 
     1   2
        /
       0
    

    Given tree t:

       4
      / 
     1   2
    

    Return false.

    Sol:

    # Definition for a binary tree node.
    # class TreeNode(object):
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
    
    class Solution(object):
        def isSubtree(self, s, t):
            """
            :type s: TreeNode
            :type t: TreeNode
            :rtype: bool
            """
            def check(s, t):
                # helper function that does the actual subtree check
                if (s is None) and (t is None):
                    return True
                if (s is None) or (t is None):
                    return False
                return (s.val == t.val and check(s.left, t.left) and check(s.right, t.right))
    
            # need to do a pre-order traversal and do a check
            # for every node we visit for the subtree
            if not s:
                # return False since None cannot contain a subtree 
                return
            if check(s, t):
                # we found a match
                return True
            if self.isSubtree(s.left, t) or self.isSubtree(s.right, t):
                # a match was found
                return True
            return False
  • 相关阅读:
    CSP2018-09
    CSP2018-03
    CSP2017-12
    CSP2017-09
    CSP2017-03
    CSP2016-12
    [算法设计与分析] 奶酪 (并查集)
    5555
    阿超
    结对作业
  • 原文地址:https://www.cnblogs.com/prmlab/p/6961620.html
Copyright © 2011-2022 走看看