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)

    总结:

  • 相关阅读:
    1015,存储过程,视图
    1009,数据库查询,聚合函数,日期时间函数
    1008,数据库表格创建,名称,格式

    公历和农历转换的JS代码
    面向对象之封装
    HTML之锚点
    HTML之css+div
    HTML基础
    SQL之定义变量
  • 原文地址:https://www.cnblogs.com/missidiot/p/10783598.html
Copyright © 2011-2022 走看看