##根据中序和后续遍历构建二叉树
根据遍历的顺序不同构建二叉树 必须要有中序遍历的参与
BTNode* createBTree(const char* inOrder,const char* posOrder, int num)
{
if (num == 0)
{
return nullptr;
}
BTNode* node = new BTNode;
node->data = posOrder[num - 1];
int leftNum = 0;
for (int i = 0; i < num; i++)
{
if (inOrder[i] == node->data)
break;
else
{
leftNum++;
}
}
node->lchild = createBTree(inOrder, posOrder, leftNum);
node->rchild = createBTree(inOrder + leftNum + 1, posOrder + leftNum, num - leftNum - 1);
return node;
}
## 先序创建二叉树
BTNode* creatBTree()
{
BTNode* node = NULL;
char ch;
scanf("%c", &ch);
if (ch != '#')
{
node = new BTNode;
node->data = ch;
node->lchild = creatBTree();
node->rchild = creatBTree();
}
return node;
}