设为首页 加入收藏

TOP

一步一步写算法(之排序二叉树插入) (二)
2014-11-23 23:36:33 来源: 作者: 【 】 浏览:7
Tags:步一步 算法 排序 插入
if(data < (*ppTreeNode)->data)

return _insert_node_into_tree(&(*ppTreeNode)->left_child, data, *ppTreeNode);

else

return _insert_node_into_tree(&(*ppTreeNode)->right_child, data, *ppTreeNode);

}

STATUS insert_node_into_tree(TREE_NODE** ppTreeNode, int data)

{

if(NULL == ppTreeNode)

return FALSE;

if(NULL == *ppTreeNode){

*ppTreeNode = (TREE_NODE*)create_tree_node(data);

assert(NULL != *ppTreeNode);

return TRUE;

}

return _insert_node_into_tree(ppTreeNode, data, NULL);

}

上面的代码已经考虑了不是根节点的情况。我们可以据此添加一个测试用例。

static void test3()

{

TREE_NODE* pTreeNode = NULL;

assert(TRUE == insert_node_into_tree(&pTreeNode, 9));

assert(TRUE == insert_node_into_tree(&pTreeNode, 8));

assert(TRUE == insert_node_into_tree(&pTreeNode, 10));

assert(9 == pTreeNode->data);

assert(8 == pTreeNode->left_child->data);

assert(10 == pTreeNode->right_child->data);

free(pTreeNode->left_child);

free(pTreeNode->right_child);

free(pTreeNode);

}

static void test3()

{

TREE_NODE* pTreeNode = NULL;

assert(TRUE == insert_node_into_tree(&pTreeNode, 9));

assert(TRUE == insert_node_into_tree(&pTreeNode, 8));

assert(TRUE == insert_node_into_tree(&pTreeNode, 10));

assert(9 == pTreeNode->data);

assert(8 == pTreeNode->left_child->data);

assert(10 == pTreeNode->right_child->data);

free(pTreeNode->left_child);

free(pTreeNode->right_child);

free(pTreeNode);

} 由于上面的代码是递归代码,为了实现代码的健壮性和完毕性,其实我们设计测试用例的时候应该至少包括9个测试用例:

(1) 参数非法

(2) 根节点不存在

(3)根节点存在,但是插入的数据已经存在

(4)根节点存在,插入数据为9,8

(5)根节点存在, 插入数据为9,10

(6)根节点存在,插入数据为9,8,7

(7)根节点存在,插入数据为9,7,8

(8)根节点存在,插入数据为7,8,9

(9)根节点存在,插入数据为7,9,8

【预告: 下面一篇博客主要介绍二叉树的节点删除】

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇一步一步写算法(之洗牌算法) 下一篇一步一步写算法(之排序二叉树删..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: