遇到的问题:
用递归层序创建一个二叉树时,输入abcdefg,而树里面却只有abc
问题相关代码
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
typedef struct BinaryTree {
char c;
struct BinaryTree* lchild;
struct BinaryTree* rchild;
}BTree,*pBTree;
typedef struct LinkList {
pBTree pInsert;
struct LinkList* LNext;
}LinkList,*pLinkList;
void BuildTree(pBTree& pTreeRoot, pLinkList& pHead, pLinkList& pTail, char c)
{
pBTree pTreeNew; pLinkList pLinkNew;
pTreeNew = (pBTree)calloc(1, sizeof(BTree));
pLinkNew = (pLinkList)calloc(1, sizeof(LinkList));
pTreeNew->c = c;
pLinkNew->pInsert = pTreeNew;
if (pTreeRoot == NULL) {
pTreeRoot = pTreeNew;
if (pHead == NULL) {
pHead =pTail= pLinkNew;
}
else return;
}
else{
pTail ->LNext= pLinkNew;
pTail = pTail->LNext;
if (pHead->pInsert->lchild == NULL) {
BuildTree(pHead->pInsert->lchild, pHead, pTail, c);
}
else {
BuildTree(pHead->pInsert->rchild, pHead, pTail, c);
pHead = pHead->LNext;
}
}
}
int main()
{
pBTree pTreeRoot;
pLinkList pHead, pTail;
pHead = (pLinkList)calloc(1, sizeof(LinkList));
pTail = (pLinkList)calloc(1, sizeof(LinkList));
pHead = pTail = NULL;
pTreeRoot = (pBTree)malloc(sizeof(BTree));
pTreeRoot = NULL;
char c=NULL;
while (c != '\n') {
scanf("%c", &c);
BuildTree(pTreeRoot, pHead, pTail, c);
}
}