zoukankan      html  css  js  c++  java
  • 剑指offer-树的子结构-python

    题目描述

    输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
     
     

    思路

    1. 空树不是任意一个树的子结构,如果 root1 与root2 中有一个为空树的话,返回False
    2. 判断是否存在子树:  
        1.  当rootA的值与rootB一致时,B是A的子结构(且A的左子树等于B左子树,A的右子树等于B右子树)
        2. 当A的左子树等于B,B是A的子结构
        3. 当A的右子树等于B,B是A的子结构
    3.    循环递归
    # -*- coding:utf-8 -*-
    # class TreeNode:
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
    class Solution:
        def HasSubtree(self, pRoot1, pRoot2):
            if not pRoot1 or not pRoot2:
                return False
            return self.isrubtreeequl(pRoot1,pRoot2) or self.HasSubtree(pRoot1.left, pRoot2) or self.HasSubtree(pRoot1.right, pRoot2)
        def isrubtreeequl(self,root1,root2):
            if not root2:
                return True
            if not root1:
                return False
            return root1.val == root2.val and self.isrubtreeequl(root1.left,root2.left) and self.isrubtreeequl(root1.right,root2.right)
  • 相关阅读:
    利用NABCD模型进行竞争性需求分析
    团队组建及项目启动
    结对项目
    归档二
    归档(1)
    自定义cell
    CoreData(数据持久化的方式)
    autoLayout(相对布局)二
    autoLayout (相对布局)1()
    细节知识点的记忆
  • 原文地址:https://www.cnblogs.com/ansang/p/11938132.html
Copyright © 2011-2022 走看看