题目:输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
第一重:找到起点。先判断当前节点,如果不对就判断左子树和右子树。
第二重:从找到的起点开始判断剩下的点。
代码:
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def is_subtree(self , nodea , nodeb):
if not nodea or not nodeb:
return False
return self.judge(nodea , nodeb) or self.judge(nodea.left , nodeb) or self.judge(nodea.right , nodeb)
def judge(self , na , nb):
if not na:
return False
if not nb:
return True
if not na.val == nb.val:
return False
return self.judge(na.left , nb.left) and self.judge(na.right , nb.right)
-----------------------------------------------------------------------------------------------------------------------
二叉树镜像:
要求:
代码:
def Mirror(self, root):
if root:
root.left, root.right = root.right, root.left
self.Mirror(root.left)
self.Mirror(root.right)