// 树中只有1个结点
void Test6()
{
	BinaryTreeNode* pNode1 = createBinaryTreeNode(1);
	Test("Test6", pNode1, true);

	destroyTree(pNode1);
}
// 树中只有1个结点
void Test4()
{
    BinaryTreeNode* pNode1 = createBinaryTreeNode(1);
    Test("Test4", pNode1);

    DestroyList(pNode1);
}
// 1
//  \
//   2
//    \
//     3
//      \
//       4
//        \
//         5
void Test5()
{
	BinaryTreeNode* pNode1 = createBinaryTreeNode(1);
	BinaryTreeNode* pNode2 = createBinaryTreeNode(2);
	BinaryTreeNode* pNode3 = createBinaryTreeNode(3);
	BinaryTreeNode* pNode4 = createBinaryTreeNode(4);
	BinaryTreeNode* pNode5 = createBinaryTreeNode(5);

	connectTreeNode(pNode1, NULL, pNode2);
	connectTreeNode(pNode2, NULL, pNode3);
	connectTreeNode(pNode3, NULL, pNode4);
	connectTreeNode(pNode4, NULL, pNode5);

	Test("Test5", pNode1, false);

	destroyTree(pNode1);
}
// 1
//  \
//   2
//    \
//     3
//      \
//       4
//        \
//         5
void Test3()
{
    BinaryTreeNode* pNode1 = createBinaryTreeNode(1);
    BinaryTreeNode* pNode2 = createBinaryTreeNode(2);
    BinaryTreeNode* pNode3 = createBinaryTreeNode(3);
    BinaryTreeNode* pNode4 = createBinaryTreeNode(4);
    BinaryTreeNode* pNode5 = createBinaryTreeNode(5);

    connectTreeNode(pNode1, NULL, pNode2);
    connectTreeNode(pNode2, NULL, pNode3);
    connectTreeNode(pNode3, NULL, pNode4);
    connectTreeNode(pNode4, NULL, pNode5);

    Test("Test3", pNode1);

    DestroyList(pNode1);
}
 BinaryTreeNode*
 creat_binary_tree( )
 {
    BinaryTreeNode* pNode1 = createBinaryTreeNode(1);
    BinaryTreeNode* pNode2 = createBinaryTreeNode(2);
    BinaryTreeNode* pNode3 = createBinaryTreeNode(3);
    BinaryTreeNode* pNode4 = createBinaryTreeNode(4);
    BinaryTreeNode* pNode5 = createBinaryTreeNode(5);
    BinaryTreeNode* pNode6 = createBinaryTreeNode(6);
    BinaryTreeNode* pNode7 = createBinaryTreeNode(7);
    
    connectBinaryTreeNode(pNode1, pNode2, pNode3);
    connectBinaryTreeNode(pNode2, pNode4, pNode5);
    connectBinaryTreeNode(pNode5, pNode7, NULL);
    connectBinaryTreeNode(pNode3, NULL, pNode6);
    
    return pNode1;
 }
// 完全二叉树
//             1
//         /      \
//        2        3
//       /\       / \
//      4  5     6   7
void Test1()
{
	BinaryTreeNode* pNode1 = createBinaryTreeNode(1);
	BinaryTreeNode* pNode2 = createBinaryTreeNode(2);
	BinaryTreeNode* pNode3 = createBinaryTreeNode(3);
	BinaryTreeNode* pNode4 = createBinaryTreeNode(4);
	BinaryTreeNode* pNode5 = createBinaryTreeNode(5);
	BinaryTreeNode* pNode6 = createBinaryTreeNode(6);
	BinaryTreeNode* pNode7 = createBinaryTreeNode(7);

	connectTreeNode(pNode1, pNode2, pNode3);
	connectTreeNode(pNode2, pNode4, pNode5);
	connectTreeNode(pNode3, pNode6, pNode7);

	Test("Test1", pNode1, true);

	destroyTree(pNode1);
}
//            10
//         /      \
//        6        14
//       /\        /\
//      4  8     12  16
void Test1()
{
    BinaryTreeNode* pNode10 = createBinaryTreeNode(10);
    BinaryTreeNode* pNode6 = createBinaryTreeNode(6);
    BinaryTreeNode* pNode14 = createBinaryTreeNode(14);
    BinaryTreeNode* pNode4 = createBinaryTreeNode(4);
    BinaryTreeNode* pNode8 = createBinaryTreeNode(8);
    BinaryTreeNode* pNode12 = createBinaryTreeNode(12);
    BinaryTreeNode* pNode16 = createBinaryTreeNode(16);

    connectTreeNode(pNode10, pNode6, pNode14);
    connectTreeNode(pNode6, pNode4, pNode8);
    connectTreeNode(pNode14, pNode12, pNode16);

    Test("Test1", pNode10);

    DestroyList(pNode4);
}
// 不是平衡二叉树
//             1
//         /      \
//        2        3
//       /\         
//      4  5        
//        /
//       6
void Test3()
{
	BinaryTreeNode* pNode1 = createBinaryTreeNode(1);
	BinaryTreeNode* pNode2 = createBinaryTreeNode(2);
	BinaryTreeNode* pNode3 = createBinaryTreeNode(3);
	BinaryTreeNode* pNode4 = createBinaryTreeNode(4);
	BinaryTreeNode* pNode5 = createBinaryTreeNode(5);
	BinaryTreeNode* pNode6 = createBinaryTreeNode(6);

	connectTreeNode(pNode1, pNode2, pNode3);
	connectTreeNode(pNode2, pNode4, pNode5);
	connectTreeNode(pNode5, pNode6, NULL);

	Test("Test3", pNode1, false);

	destroyTree(pNode1);
}