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

    一、题目:

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

    二、思路:

           递归思想,判断从该点开始是不是子树,是则返回正确,不是则判断是不是左右子树的子树。判断子树时,需要该点的值相同,且左右子树分别是各自的子树才行,同时要考虑到一方为空的情况,不允许左边为空而右边不为空的情况。

    三、代码:

    # -*- 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) or self.HasSubtree(pRoot1.left, pRoot2) or self.HasSubtree(pRoot1.right, pRoot2)
        def IsSubTree(self, pRoot1, pRoot2):
            if pRoot1==None:
                if pRoot2==None:
                    return True
                else:
                    return False
            else:
                if pRoot2==None:
                    return True
                else:
                    return  pRoot1.val==pRoot2.val and self.IsSubTree(pRoot1.left, pRoot2.left) and self.IsSubTree(pRoot1.right, pRoot2.right) 
  • 相关阅读:
    Go
    Go
    Go
    Go
    Go
    Go
    爬虫常用相关库
    Go
    python基础第7天(day19)
    python基础第五天(day17)元组,集合,字符串操作 字符编码:
  • 原文地址:https://www.cnblogs.com/EstherLjy/p/9275558.html
Copyright © 2011-2022 走看看