<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 <small><i>This notebook was prepared by Donne Martin. Source and license info is on GitHub.</i></small>
Challenge Notebook
Problem
Step1:  Unit Test
The following unit test is expected to fail until you solve the challenge.
<ASSISTANT_TASK:>
Python Code:
%run ../bst/bst.py
%load ../bst/bst.py
def check_balance(root):
    # TODO: Implement me
    pass
Explanation: <small><i>This notebook was prepared by Donne Martin. Source and license info is on GitHub.</i></small>
Challenge Notebook
Problem: Check if a binary tree is balanced.
Constraints
Test Cases
Algorithm
Code
Unit Test
Solution Notebook
Constraints
Is a balanced tree one where the heights of two sub trees of any node doesn't differ by more than 1?
Yes
Can we assume we already have a Node class with an insert method?
Yes
Test Cases
5, 3, 8, 1, 4 -> Yes
5, 3, 8, 9, 10 -> No
Algorithm
Refer to the Solution Notebook.  If you are stuck and need a hint, the solution notebook's algorithm discussion might be a good place to start.
Code
End of explanation
# %load test_check_balance.py
from nose.tools import assert_equal
class TestCheckBalance(object):
    def test_check_balance(self):
        node = Node(5)
        insert(node, 3)
        insert(node, 8)
        insert(node, 1)
        insert(node, 4)
        assert_equal(check_balance(node), True)
        node = Node(5)
        insert(node, 3)
        insert(node, 8)
        insert(node, 9)
        insert(node, 10)
        assert_equal(check_balance(node), False)
        print('Success: test_check_balance')
def main():
    test = TestCheckBalance()
    test.test_check_balance()
if __name__ == '__main__':
    main()
Explanation: Unit Test
The following unit test is expected to fail until you solve the challenge.
End of explanation
<END_TASK>