mirror of
https://github.com/donnemartin/interactive-coding-challenges
synced 2026-01-06 01:18:02 +00:00
@@ -115,21 +115,24 @@
|
|||||||
"\n",
|
"\n",
|
||||||
" def get_next(self, node):\n",
|
" def get_next(self, node):\n",
|
||||||
" if node is None:\n",
|
" if node is None:\n",
|
||||||
" raise Exception('Invalid input node')\n",
|
" raise TypeError('node cannot be None')\n",
|
||||||
" if node.right is not None:\n",
|
" if node.right is not None:\n",
|
||||||
" return self._left_most(node.right)\n",
|
" return self._left_most(node.right)\n",
|
||||||
" return self._next_ancestor(node)\n",
|
" else:\n",
|
||||||
|
" return self._next_ancestor(node)\n",
|
||||||
"\n",
|
"\n",
|
||||||
" def _left_most(self, node):\n",
|
" def _left_most(self, node):\n",
|
||||||
" if node.left is not None:\n",
|
" if node.left is not None:\n",
|
||||||
" return self._left_most(node.left)\n",
|
" return self._left_most(node.left)\n",
|
||||||
" return node.data\n",
|
" else:\n",
|
||||||
|
" return node.data\n",
|
||||||
"\n",
|
"\n",
|
||||||
" def _next_ancestor(self, node):\n",
|
" def _next_ancestor(self, node):\n",
|
||||||
" if node.parent is not None:\n",
|
" if node.parent is not None:\n",
|
||||||
" if node.parent.data > node.data:\n",
|
" if node.parent.data > node.data:\n",
|
||||||
" return node.parent.data\n",
|
" return node.parent.data\n",
|
||||||
" return self._next_ancestor(node.parent)\n",
|
" else:\n",
|
||||||
|
" return self._next_ancestor(node.parent)\n",
|
||||||
" # We reached the root, the original input node\n",
|
" # We reached the root, the original input node\n",
|
||||||
" # must be the largest element in the tree.\n",
|
" # must be the largest element in the tree.\n",
|
||||||
" return None"
|
" return None"
|
||||||
|
|||||||
Reference in New Issue
Block a user