トピックツリー下部構造を説明
二つのバイナリ入力はA、B、Bは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):
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
トピック2
所与のバイナリツリーの動作は、バイナリツリーは、ソース画像に変換されます。
説明を入力します。
バイナリツリーの定義をミラーリング:バイナリソース 8 / \ 610 / \ / \ 57911 ミラーバイナリ 8 / \ 106 / \ / \ 11975
思考
再帰
# -*- 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