Descreva um subestruturas tópico árvores
Duas entradas binárias A, B, B é julgado não subestrutura de um. (Ps: nós concordamos árvore vazia não é uma árvore qualquer subestrutura)
pensamento
backtracking
# -*- 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):
if not (pRoot2 and pRoot1) :
return False
if pRoot2.val == pRoot1.val:
left = True
right = True
if pRoot2.left:
if not self.HasSubtree(pRoot1.left, pRoot2.left):
left = False
if pRoot2.right:
if not self.HasSubtree(pRoot1.right, pRoot2.right):
right = False
if not (left and right):
if not (self.HasSubtree(pRoot1.left,pRoot2) or self.HasSubtree(pRoot1.right,pRoot2)):
return False
else:
if self.HasSubtree(pRoot1.left, pRoot2) or self.HasSubtree(pRoot1.right, pRoot2):
return True
else:
return False
return True
tópico dois
Operação de uma determinada árvore binária, a árvore binária é convertida em uma imagem de origem.
Digite uma descrição:
Espelhamento definição de árvore binária: fonte binária 8 / \ 610 / \ / \ 57911 espelho binário 8 / \ 106 / \ / \ 11975
pensamento
recursão
# -*- coding:utf-8 -*-
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
# 返回镜像树的根节点
def Mirror(self, root):
if root:
temp = root.right
root.right = root.left
root.left = temp
self.Mirror(root.left)
self.Mirror(root.right)
return root