data_structures.binary_tree.is_sorted ===================================== .. py:module:: data_structures.binary_tree.is_sorted .. autoapi-nested-parse:: Given the root of a binary tree, determine if it is a valid binary search tree (BST). A valid binary search tree is defined as follows: - The left subtree of a node contains only nodes with keys less than the node's key. - The right subtree of a node contains only nodes with keys greater than the node's key. - Both the left and right subtrees must also be binary search trees. In effect, a binary tree is a valid BST if its nodes are sorted in ascending order. leetcode: https://leetcode.com/problems/validate-binary-search-tree/ If n is the number of nodes in the tree then: Runtime: O(n) Space: O(1) Attributes ---------- .. autoapisummary:: data_structures.binary_tree.is_sorted.tree Classes ------- .. autoapisummary:: data_structures.binary_tree.is_sorted.Node Module Contents --------------- .. py:class:: Node .. py:method:: __iter__() -> collections.abc.Iterator[float] >>> root = Node(data=2.1) >>> list(root) [2.1] >>> root.left=Node(data=2.0) >>> list(root) [2.0, 2.1] >>> root.right=Node(data=2.2) >>> list(root) [2.0, 2.1, 2.2] .. py:attribute:: data :type: float .. py:property:: is_sorted :type: bool >>> Node(data='abc').is_sorted True >>> Node(data=2, ... left=Node(data=1.999), ... right=Node(data=3)).is_sorted True >>> Node(data=0, ... left=Node(data=0), ... right=Node(data=0)).is_sorted True >>> Node(data=0, ... left=Node(data=-11), ... right=Node(data=3)).is_sorted True >>> Node(data=5, ... left=Node(data=1), ... right=Node(data=4, left=Node(data=3))).is_sorted False >>> Node(data='a', ... left=Node(data=1), ... right=Node(data=4, left=Node(data=3))).is_sorted Traceback (most recent call last): ... TypeError: '<' not supported between instances of 'str' and 'int' >>> Node(data=2, ... left=Node([]), ... right=Node(data=4, left=Node(data=3))).is_sorted Traceback (most recent call last): ... TypeError: '<' not supported between instances of 'int' and 'list' .. py:attribute:: left :type: Node | None :value: None .. py:attribute:: right :type: Node | None :value: None .. py:data:: tree