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)
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)
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)