1.解题思路
该题需要提供两个接口,一个是根据前序构造二叉树的接口,一个是中序遍历接口
2.代码实现
2.1根据前序构造二叉树的接口
因为’#‘就代表空,所以如果遇到’#'时,直接返回即可.
struct BinaryNode* TreeCreate(char *a,int *i) { if(a[*i]=='#') { (*i)++; return NULL; } struct BinaryNode*root=(struct BinaryNode*)malloc(sizeof(struct BinaryNode)); root->val=a[*i]; (*i)++; root->left=TreeCreate(a,i); root->right=TreeCreate(a,i); return root; }
2.2中序遍历接口
void Inorder(struct BinaryNode*root) { if(root==NULL) return; Inorder(root->left); printf("%c ",root->val); Inorder(root->right); }
2.3总体代码
#include <stdio.h> typedef struct BinaryNode { char val; struct BinaryNode*left; struct BinaryNode*right; }BT; struct BinaryNode* TreeCreate(char *a,int *i) { if(a[*i]=='#') { (*i)++; return NULL; } struct BinaryNode*root=(struct BinaryNode*)malloc(sizeof(struct BinaryNode)); root->val=a[*i]; (*i)++; root->left=TreeCreate(a,i); root->right=TreeCreate(a,i); return root; } void Inorder(struct BinaryNode*root) { if(root==NULL) return; Inorder(root->left); printf("%c ",root->val); Inorder(root->right); } int main() { char a[101]; gets(a); int pi=0; struct BinaryNode*root= TreeCreate(a,&pi); Inorder(root); return 0; }
结尾:今天的分享到此结束,喜欢的朋友如果感觉有帮助可以点赞三连支持,咱们共同进步!