Пример #1
0
from helpers.py.tree_node import TreeNode, TreeNodeOperation


class Solution:
    def mirrorTree(self, root: TreeNode) -> TreeNode:
        if not root:
            return None
        root.left, root.right = self.mirrorTree(root.right), self.mirrorTree(
            root.left)
        return root


if __name__ == '__main__':
    test_cases = [[4, 2, 7, 1, 3, 6, 9]]
    for case in test_cases:
        case = TreeNodeOperation().create_binary_tree(case)
        ans = Solution().mirrorTree(case)
        TreeNodeOperation().print(ans)
Пример #2
0
class Solution:
    """
    倒序中序遍历
    """
    def __init__(self):
        self.k = 0
        self.ans = None

    def kthLargest(self, root: TreeNode, k: int) -> int:
        def post_order(root: TreeNode):
            if not root:
                return
            post_order(root.right)
            self.k -= 1
            if self.k == 0:
                self.ans = root.val
            post_order(root.left)

        self.k = k
        post_order(root)
        return self.ans


if __name__ == '__main__':
    test_cases = [[[3, 1, 4, None, 2], 1], [[5, 3, 6, 2, 4, None, None, 1], 3]]
    for case in test_cases:
        case[0] = TreeNodeOperation().create_binary_tree(case[0])
        ans = Solution().kthLargest(*case)
        print(ans)
Пример #3
0
from helpers.py.tree_node import TreeNode, TreeNodeOperation


class Solution:
    def isSubStructure(self, A: TreeNode, B: TreeNode) -> bool:
        def recur(A, B):
            if not B:
                return True
            if not A or A.val != B.val:
                return False
            return recur(A.left, B.left) and recur(A.right, B.right)

        return bool(A and B) and (recur(A, B) or self.isSubStructure(
            A.left, B) or self.isSubStructure(A.right, B))


if __name__ == '__main__':
    test_cases = [[[1, 2, 3], [3, 1]], [[3, 4, 5, 1, 2], [4, 1]]]

    for case in test_cases:
        case[0] = TreeNodeOperation().create_binary_tree(case[0])
        TreeNodeOperation().print(case[0])
        TreeNodeOperation().pre_order(case[0])
        case[1] = TreeNodeOperation().create_binary_tree(case[1])
        TreeNodeOperation().print(case[1])
        ans = Solution().isSubStructure(*case)
        print(ans)