1.创建二叉树
先创建根节点,后创建左子树,再最后是右子树
//构建二叉树的结点
PBTNode BuyBinTreeNode(BTDataType data)
{
PBTNode pNewNode = NULL;
pNewNode = (PBTNode)malloc(sizeof(BTNode));
if(NULL == pNewNode)
{
printf("申请失败!!!\n");
return NULL;
}
pNewNode->_data = data;
pNewNode->_pLeft = NULL;
pNewNode->_pRight = NULL;
return pNewNode;
}
//创建二叉树数据节点(按前序遍历的方式创建)
void _CreateBinTree(PBTNode* pRoot,const BTDataType* array,
int size,int* index,BTDataType invalid)
//(*index)是访问数组array的下标
{
assert(index);
assert(pRoot);
if(NULL == pRoot || array[*index] == invalid)
return;
else if((*index) < size && invalid != array[*index])
{
//创建根节点
*pRoot = BuyBinTreeNode(array[*index]);
//创建根节点的左子树
++(*index);
_CreateBinTree(&(*pRoot)->_pLeft,array,size,index,invalid);
//创建根节点的右子树
++(*index);
_CreateBinTree(&(*pRoot)->