트리 제공 - 안전을 증명하기 위해 - 재귀

주제 트리의 하부 구조를 설명

두 바이너리 입력은 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

 

주제 두

주어진 이진 트리의 동작은, 이진 트리 소스 이미지로 변환됩니다.

설명을 입력합니다 :

이진 트리의 미러링 정의 : 이진 소스 
    	    8 
    	   / \ 
    	  610 
    	 / \ / \ 
    	57,911 
    	미러 이진 
    	    8 
    	   / \ 
    	  106 
    	 / \ / \ 
    	11,975

사고

재귀

# -*- 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

 

게시 82 개 원래 기사 · 원 찬양 2 · 조회수 4369

추천

출처blog.csdn.net/qq_22498427/article/details/104741789