美文网首页剑指offer-python
面试18:树的子结构

面试18:树的子结构

作者: fighting_css | 来源:发表于2018-06-24 22:42 被阅读0次

【题目描述】
输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
【思路】
递归,
issubstree(root1,root2)判断root2是否为root1的子树,且根值相等
若当前pRoot1的根节点不等于pRoot2,则分别pRoot1探索左右子树是否存在子树pRoot2。
【代码】

# 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
        #case1:当前值相等
        res = False
        if pRoot1.val == pRoot2.val:
            #则判断根节点下是不是pRoot2的子树
            res = self.issubstree(pRoot1,pRoot2)
        if res == False:
            #探索左子树
            res = self.HasSubtree(pRoot1.left,pRoot2)
        if res ==False:
            #探索右子树
            res = self.HasSubtree(pRoot1.right,pRoot2)
        return res
    def issubstree(self,root1,root2):
        if root2 == None:
            #说明root2全部匹配成功
            return True
        if root1 == None:
            #搜索完root1,无匹配
            return False
        if root1.val != root2.val:
            #不相等则说明当前子树不相等
            return False
        #当前匹配,需要左右子树都需要匹配
        return self.issubstree(root1.left,root2.left) and self.issubstree(root1.right,root2.right)

相关文章

  • 面试18:树的子结构

    【题目描述】输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)【思路】递归...

  • 面试题18:树的子结构

    题目:输入两颗二叉树A和B,判断B是不是A 的子结构,二叉树结构定义如下: 分为两步: 1.在树A中找到和B的根结...

  • 面试题18:树的子结构

    题目描述 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 代码实现 主...

  • 面试题18:树的子结构

    题目: 输入两棵二叉树A和B,判断B是不是A的子结构。 思路: 链接:用递归实现。抽象为两步: 1)在树A中找到与...

  • 数据结构算法(四) 之 树的 2 道面试题 18 & 1

    剑指 Offer 面试题 18(Java 版):树的子结构 题目:输入两棵二叉树 A 和 B,判断 B 是不是 A...

  • 18,树的子结构

    思路比较简单。若是一开始,就想用一个递归函数中,既能判断两个根节点相同的树是不是同一个树,又能对不同的根节点进行递...

  • 18 树的子结构

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

  • 剑指offer 面试题18:树的子结构

    题目:输入两棵二叉树A和B,判断B是不是A的子结构。 解法:二叉树问题,递归思路

  • 面试题18:树的子结构(剑指Offer)

    题目:输入两棵二叉树A和B,判断B是不是A的子结构。 第一步在树A中找到和B的根结点的值一样的结点R,第二步再判断...

  • LeetCode | 面试题26. 树的子结构【Python】

    LeetCode 面试题26. 树的子结构【Medium】【Python】【DFS】 问题 力扣 输入两棵二叉树A...

网友评论

    本文标题:面试18:树的子结构

    本文链接:https://www.haomeiwen.com/subject/dzasyftx.html