def test_invalidTreeIsNotBST(self): root = TreeNode(20) root.left = TreeNode(10) root.right = TreeNode(30) root.right.left = TreeNode(5) root.right.right = TreeNode(40) self.assertFalse(is_bst(root))
def test_validBinaryTreeIsValid(self): root = TreeNode(5) root.left = TreeNode(3) root.right = TreeNode(7) root.left.left = TreeNode(1) root.left.right = TreeNode(4) root.right.left = TreeNode(6) self.assertTrue(is_bst(root))
def remove_by_recursion(self, value): if not self.root: return False elif value == self.root.data: temp_root = TreeNode() # 创建一个临时节点 方便处理 temp_root.left = self.root ret = BinarySearchTree.__remove__(temp_root.left, temp_root, value) self.root = temp_root.left return ret elif value < self.root.data and self.root.left: return BinarySearchTree.__remove__(self.root.left, self.root, value) elif value > self.root.data and self.root.right: return BinarySearchTree.__remove__(self.root.right, self.root, value) return False