该题是一个io型的题目,需要全部自己写,因为c语言没有树,所以需要自定义一个结构体来写出
树的结点以及创建树、中序排列、销毁树三个函数
被调用函数
typedef char TreeDatetype;
typedef struct TreeNode
{
TreeDatetype _data;
struct TreeNode* _left;
struct TreeNode* _right;
} TreeNode;
TreeNode * TreeCreate(TreeDatetype* arr, int*i)
{
if(arr[*i] == '#')
{
(*i)++;
return NULL;
}
TreeNode* node = (TreeNode*) malloc(sizeof(TreeNode));
node->_data = arr[*i];
(*i)++;
node->_left = TreeCreate(arr,i);
node->_right = TreeCreate(arr, i);
return node;
}
void inOrder(TreeNode* root)
{
if(root == NULL)
return ;
inOrder(root->_left);
printf("%c ",root->_data);
inOrder(root->_right);
}
void TreeDestory(TreeNode* root)
{
free(root->_left);
free(root->_right);
free(root);
}
这题最难的就是创建树这个地方要利用前序的定义进行递归实现。
主函数
int main()
{
char arr[100] = {0};
scanf("%s", arr);
int i = 0;
TreeNode* root = TreeCreate(arr,&i);
inOrder(root);
return 0;
}
这里还需要注意的一个点就是一定要定义一个i变量出来方便数组的遍历。