#输入两颗二叉树A、B,判断B是不是A的子结构
#思路:递归遍历二叉数A,找到A中和B根节点相同的节点,接着顺着这个相等的节点判断子结构是不是和B树的子结构相同
def subTree(pRoot1,pRoot2):
result = False
if pRoot1 is not None and pRoot2 is not None:
if pRoot1.val == pRoot2.val:
result = IsTree1ContainsTree2(pRoot1,pRoot2)
if not result:
result = subTree(pRoot1.left,pRoot2)
if not result:
result = subTree(pRoot1.right,pRoot2)
return result
def IsTree1ContainsTree2(pRoot1, pRoot2):
if pRoot2 is None:
return True
if pRoot1 is None: # 1已经到了叶子结点,为空了,肯定不会包含2了
return False
if pRoot1.val != pRoot2.val: # 两个树对应点的值不相等,不用继续了,不包含
return False
# 经历过上面的筛选后,这个节点通过了考验,
# 继续向下,判断各自的左右子节点是否一样
# 用递归方法可以直接写出
return IsTree1ContainsTree2(pRoot1.left, pRoot2.left) and IsTree1ContainsTree2(pRoot1.right, pRoot2.right)
root1 = TreeNode(8)
root1.left = TreeNode(8)
root1.right = TreeNode(7)
root1.left.left = TreeNode(9)
root1.left.right = TreeNode(2)
root1.left.right.left = TreeNode(4)
root1.left.right.right = TreeNode(7)
root2 = TreeNode(8)
root2.left = TreeNode(9)
root2.right = TreeNode(1)
# print(subTree(root1,root2))
递归遍历二叉树--python
最新推荐文章于 2023-08-16 17:38:42 发布
本文介绍了一种算法,用于判断一棵二叉树B是否为另一棵二叉树A的子结构。通过递归遍历A,寻找与B根节点值相同的节点,再对比其子结构是否一致。
520

被折叠的 条评论
为什么被折叠?



