#include <stdio.h>
#include <stdlib.h>
/* Binary Tree Node */
typedef struct Node {
int val;
struct Node* Lchild,*Rchild;
}BTnode,*BTree;
/* Creat Binary Tree */
int CreatBTree(BTree* T) {
int data;
scanf_s("%d", &data);
if (data == 0x0)
*T = NULL;
else {
*T = (BTree)malloc(sizeof(BTnode));
if (*T == NULL){
printf("申请内存失败\n");
return 0;
}
else {
(*T)->val = data;
}
CreatBTree(&(*T)->Lchild);
CreatBTree(&(*T)->Rchild);
}
return 1;
}
void inorder(BTnode* root, int* res, int* resSize) {
if (root == NULL)
return;
else {
inorder(root->Lchild, res, resSize);
res[(*resSize)++] = root->val; //存放到res地址中去
//printf("resSize value:%d\n", *resSize);
//printf("root->val:%d\n", root->val);
//printf("address of res:%x\n", (unsigned int)res);
//printf("value of res:%d\n", res[i++]);
printf("%d\t", res[((*resSize)-1)]); //将存放的内容打印出来,因为前面++了,所以现在退个1
inorder(root->Rchild, res, resSize);
}
}
int* inorderTraversal(BTnode* root, int* returnSize) {
int* res = malloc(sizeof(int) * 501);
*returnSize = 0;
inorder(root, res, returnSize);
return res;
}
int main(void)
{
BTree T;
int* res1 = (int*) malloc(sizeof(int));
printf("请输入二叉树,以0作为结束:\n");
CreatBTree(&T);
printf("中序遍历的结果为:\n");
inorderTraversal(T, res1);
while (1);
}