def construct_helper(pre_order, in_order, pre_start, pre_end, in_start, in_end): if pre_start > pre_end: return index = -1 for (i, num) in enumerate(in_order): if num == pre_order[pre_start]: index = i break if index == -1: raise RuntimeError(u"错误的输入") root = TreeNode(pre_order[index]) left_length = index - in_start root.left = construct_helper(pre_order, in_order, pre_start + 1, pre_start + left_length, in_start, index - 1) root.right = construct_helper(pre_order, in_order, pre_start + left_length + 1, pre_end, index + 1, in_end) return root
def helper(root, n, val, nodes): val += root.val nodes.append(root) if not root.left and not root.right: if val == n: for node in nodes: print node.val, print "\n" nodes.pop() return if root.left: helper(root.left, n, val, nodes) if root.right: helper(root.right, n, val, nodes) nodes.pop() if __name__ == '__main__': node1 = TreeNode(10) node2 = TreeNode(5) node3 = TreeNode(12) node4 = TreeNode(4) node5 = TreeNode(7) node6 = TreeNode(6) node7 = TreeNode(7) node1.left = node2 node1.right = node3 node2.left = node4 node2.right = node5 print_path_of_n(node1, 22)
right = get_depth_of_tree(root.right) return left + 1 if left > right else right + 1 def is_balanced_tree(root): if not root: return True, 0 left, left_depth = is_balanced_tree(root.left) right, right_depth = is_balanced_tree(root.right) return left and right and abs( left_depth - right_depth) <= 1, \ left_depth + 1 if left_depth > right_depth else right_depth + 1 if __name__ == '__main__': node1 = TreeNode(1) node2 = TreeNode(2) node3 = TreeNode(3) node4 = TreeNode(4) node5 = TreeNode(5) node6 = TreeNode(6) node7 = TreeNode(7) node1.left = node2 node1.right = node3 node2.left = node4 node2.right = node5 node3.left = node6 node3.right = node7 print get_depth_of_tree(node1) print is_balanced_tree(node1)
def helper(root1, root2): if not root2: return True if not root1 or root1.val != root2.val: return False return helper(root1.left, root2.left) and helper(root1.right, root2.right) if __name__ == '__main__': node1 = TreeNode(1) node2 = TreeNode(2) node3 = TreeNode(3) node4 = TreeNode(4) node5 = TreeNode(5) node6 = TreeNode(6) node7 = TreeNode(7) node1.left = node2 node1.right = node3 node2.left = node4 node2.right = node5 node3.left = node6 node3.right = node7 node8 = TreeNode(2) node9 = TreeNode(4) node10 = TreeNode(5) node8.left = node9 node8.right = node10 print is_substructure_of_tree(node1, node8)