zoukankan      html  css  js  c++  java
  • 二叉树的子结构

    剑指offer 牛客网 二叉树的子结构

    # -*- coding: utf-8 -*-
    """
    Created on Mon Apr  8 16:13:20 2019
    
    @author: Administrator
    输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
    
    思路:分两步
    step1:两个头结点对比
    step2:分别匹配左右子节点,采用递归的方式
    """
    
    # -*- 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):
            # write code here
            if pRoot1 == None or pRoot2 == None:    
                return False
            return self.issubtree(pRoot1,pRoot2)
        def issubtree(self,p1,p2):
            if p2 == None:  #如果p2为空了说明p2全部匹配上了,所以返回是子结构
                return True
            if p1 == None:  
                return p1 == p2     #???
            res = False
            if p1.val == p2.val:    #第一步,即比较两个头结点是否相等
                #头结点相等的情况下,递归匹配其左右子节点
                res = self.issubtree(p1.left,p2.left) and self.issubtree(p1.right,p2.right)
            #分别从左右子节点开始调用,去匹配
            return res or self.issubtree(p1.left,p2) or self.issubtree(p1.right,p2)
            
    if __name__ == '__main__':
        solution = Solution()
        node_left = TreeNode(9)
        node_right = TreeNode(2)
        p_left = TreeNode(8)
        p_left.left = node_left
        p_left.right = node_right
        
        node_left = TreeNode(6)
        node_right = TreeNode(5)
        p_right = TreeNode(7)
        p_right.left = node_left
        p_right.right = node_right
        
        p1 = TreeNode(8)
        p1.left = p_left
        p1.right = p_right
        
        
        node_left = TreeNode(9)
        node_right = TreeNode(2)
        p2 = TreeNode(8)
        p2.left = node_left
        p2.right = node_right
        
        res = solution.HasSubtree(p1,p2)
        print(res)
  • 相关阅读:
    经典测试面试题一
    自定义函数实现字符串数组互转
    php 实现密码错误三次锁定账号10分钟
    HTTP状态码
    Linux知识点
    慢查日志
    curl 采集
    HTTP协议
    docker配置
    mysql数据库索引、存储引擎、事务
  • 原文地址:https://www.cnblogs.com/missidiot/p/10671890.html
Copyright © 2011-2022 走看看