# -*- coding: utf-8 -*- # @Author : Jing # @FileName: 100. Same Tree.py # @IDE: PyCharm # https://leetcode.com/problems/same-tree/ from base import TreeNode, reConstructBinaryTree, PrintTree class Solution: def isSameTree(self, p: TreeNode, q: TreeNode) -> bool: if not p and not q: return True if not p or not q: return False if p.val != q.val: return False return self.isSameTree(p.left, q.left) and self.isSameTree( p.right, q.right) if __name__ == '__main__': pre_order = [1, 2, 3] in_order = [2, 1, 3] root = reConstructBinaryTree(pre_order, in_order) p = PrintTree() p.pre_order(root) p.print_tree() s = Solution() print(s.isSameTree(root, root))
q: 'TreeNode'): self.helper(root, p, q) return self.res def lowestCommonAncestor4(self, root: 'TreeNode', p: 'TreeNode', q: 'TreeNode'): stack, tmp_set, parents = [root], set(), {root: None} while p not in parents or q not in parents: root = stack.pop() if root.left: parents[root.left] = root stack.append(root.left) if root.right: parents[root.right] = root stack.append(root.right) while q: tmp_set.add(q) q = parents[q] while p not in tmp_set: p = parents[p] return p if __name__ == '__main__': pre_order = [6, 2, 0, 4, 3, 5, 8, 7, 9] in_order = [0, 2, 3, 4, 5, 6, 7, 8, 9] root = reConstructBinaryTree(pre_order, in_order) P = PrintTree() P.pre_order(root) P.print_tree()