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

    题目描述

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

    解答

    先判断A、B是否为空,有一个为空,就返回False(ps:我们约定空树不是任意一个树的子结构)。

    在A、B都不为空的情况下:

    1、判断B的根是否在A里面,如果A的根等于B的跟,那么分别在A的左右孩子里面找等于B的根的节点。

    2,在A的节点内,没有找到等于B的根的节点,返回False。

    3,在A的节点内存在等于B的根的节点。

    4,剩下就是递归。

    # coding:utf-8
    
    class ListNode:
        def __init__(self,x, left=None, right=None):
            self.val = x
            self.left = left
            self.right = right
    
    class Solution:
        def HasSubtree(self, pRoot1, pRoot2):
            # write code here
            flag = False
            if pRoot1 and pRoot2:
                if pRoot1.val == pRoot2.val:
                    flag = self.same(pRoot1, pRoot2)
                if not flag:
                    flag = self.HasSubtree(pRoot1.left, pRoot2)
                if not flag:
                    flag = self.HasSubtree(pRoot1.right, pRoot2)
            return flag
    
    
        def same(self, p1, p2):
            if not p2:
                return True
            if not p1:
                return False
            return p1.val == p2.val and self.same(p1.left, p2.left) and self.same(p1.right, p2.right)
    
    a = ListNode('a')
    b = ListNode('b')
    c = ListNode('c')
    d = ListNode('d')
    f = ListNode('a')
    e = ListNode('e')
    
    f.left = b
    a.left = b
    b.left = c
    c.left = d
    f.right = e
    
    ret = Solution().HasSubtree(a,f)
    print ret

    结束!

  • 相关阅读:
    Win10 ntoskrnl.exe蓝屏解决
    Log POST Data in Nginx
    MACOS关闭指定端口
    获取Skype用户IP地址
    禁止windows10带来的三大隐患问题
    各种语言一句话反弹shell
    2015阿里巴巴安全峰会PPT
    HTTPS反向代理嗅探
    利用arpspoof和urlsnarf 进行ARP嗅探
    收集的几个存在漏洞的程序
  • 原文地址:https://www.cnblogs.com/aaronthon/p/13746001.html
Copyright © 2011-2022 走看看