      "\n",
      "We could solve this with an iterative or a recursive algorithm, both are well suited for this exercise.  We'll use a recursive algorithm for practice with recursion.  Note this takes an extra space of O(m) where m is the recursion depth.\n",
      "\n",
      "* Base case:\n",
      "    * if first and second lists are NULL AND carry is zero\n",
      "        * Return NULL\n",
      "* Recursive case:\n",
      "    * Set `value` to `carry`\n",
      "    * Add both nodes' `data` to `value`\n",
      "    * Set the `new_carry` to 1 if `value >= 10, else 0`\n",
      "    * Set the `remainder` to `value % 10`\n",
 
</s> remove     "    * Only add if a node is not NULL\n",
 </s> add     "    * Only add if a node is not None\n", </s> remove     "* If the data we are inserting is NULL, return\n",
 </s> add     "* If the data we are inserting is None, return\n", </s> remove     "* If the data we are inserting is NULL, return\n",
 </s> add     "* If the data we are inserting is None, return\n", </s> remove     "* What if the final node is being deleted, for example a single node list?  Do we make it a dummy with a NULL value?\n",
 </s> add     "* What if the final node is being deleted, for example a single node list?  Do we make it a dummy with value None?\n", </s> remove     "* What if the final node is being deleted, for example a single node list?  Do we make it a dummy with a NULL value?\n",
 </s> add     "* What if the final node is being deleted, for example a single node list?  Do we make it a dummy with value None?\n",
    "    * if first and second lists are None AND carry is zero\n",
    "        * Return None\n",
      "\n",
      "We could solve this with an iterative or a recursive algorithm, both are well suited for this exercise.  We'll use a recursive algorithm for practice with recursion.  Note this takes an extra space of O(m) where m is the recursion depth.\n",
      "\n",
      "* Base case:\n",
    "    * if first and second lists are None AND carry is zero\n",
    "        * Return None\n",
    "    * if first and second lists are None AND carry is zero\n",
    "        * Return None\n",
      "* Recursive case:\n",
      "    * Set `value` to `carry`\n",
      "    * Add both nodes' `data` to `value`\n",
      "    * Set the `new_carry` to 1 if `value >= 10, else 0`\n",
      "    * Set the `remainder` to `value % 10`\n",
keep keep keep keep replace replace keep keep keep keep keep
 Changed discussions of NULL to None to be more Pythonic. 
linked_lists/add_reverse/add_reverse_solution.ipynb