二叉树重建(先序+中序)

来源:互联网 发布:js获取第二个子元素 编辑:程序博客网 时间:2024/06/07 02:29
void Rebuild(char *pPreOrder , char *pInOrder , Node **pRoot , int nTreeLen){int  nLeftLen , nRightLen;char *pLeftEnd;Node *p;//边界条件检查if(!pPreOrder || !pInOrder || !pRoot)    return;   if(!(p = (Node *)malloc(sizeof(Node))))    return;p->chValue = *pPreOrder;    p->lChild = p->rChild = NULL;*pRoot = p;if(nTreeLen == 1)    return;//划分左右子数pLeftEnd = pInOrder;while(*pLeftEnd != *pPreOrder)    pLeftEnd++;nLeftLen = (int)(pLeftEnd - pInOrder);nRightLen = nTreeLen - nLeftLen - 1;if(nLeftLen)    Rebuild(pPreOrder + 1 , pInOrder , &(p->lChild) , nLeftLen);if(nRightLen)  Rebuild(pPreOrder + nLeftLen + 1, pInOrder + nLeftLen + 1 , &(p->rChild) , nRightLen);}


原创粉丝点击