      "        return 1 + max(left_height, right_height)\n",
      "\n",
      "    def check_balance(self):\n",
      "        if self.root is None:\n",
      "            raise Exception('No root node')\n",
      "        height = self._check_height(self.root)\n",
      "        return height != -1"
     ]
    },
    {
 
</s> remove     "    @raises(Exception)\n",
 </s> add     "    @raises(TypeError)\n", </s> remove     "    @raises(Exception)\n",
 </s> add     "    @raises(TypeError)\n", </s> remove     @raises(Exception)
 </s> add     @raises(TypeError)
    "            raise TypeError('root cannot be None')\n",
      "        return 1 + max(left_height, right_height)\n",
      "\n",
      "    def check_balance(self):\n",
      "        if self.root is None:\n",
    "            raise TypeError('root cannot be None')\n",
      "        height = self._check_height(self.root)\n",
      "        return height != -1"
     ]
    },
    {
keep keep keep keep replace keep keep keep keep keep
 Update tree check balance challenge (#120)

Use more specific exception types. 
graphs_trees/check_balance/check_balance_solution.ipynb