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

    本题来自《剑指offer》 树的子结构

    题目:

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

    思路:

       分两步走:

       第一步:判断根节点,两个根节点若相同,则进入第二步,否则继续寻找根节点

       第二步:两个数自行遍历,直到根节点为止

    Python Code:

    # -*- 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 False
            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)

    总结:

  • 相关阅读:
    css3 实现水平或垂直布局
    css div 细边框
    css scroll bug
    F和弦大横按
    简单分析beyond作曲
    [编织消息框架][设计协议]优化long,int转换
    nginx 限制ip
    nginx注册成服务
    nginx 添加win 服务
    sqlserver 使用维护计划备份
  • 原文地址:https://www.cnblogs.com/missidiot/p/10783598.html
Copyright © 2011-2022 走看看