题目描述
输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
从A根节点开始,判断是否存在子结构与B一样,就是代码中same_root函数,然后依次遍历A的各个节点即可:
# -*- 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 not pRoot1 or not pRoot2:
return False
return self.same_root(pRoot1, pRoot2) or self.HasSubtree(pRoot1.left, pRoot2)\
or self.HasSubtree(pRoot1.right, pRoot2)
def same_root(self, left, right):
if not right:
return True
if not left or left.val != right.val:
return False
return self.same_root(left.left, right.left) and\
self.same_root(left.right, right.right)