遞迴實現先序輸入構建樹
阿新 • • 發佈:2019-09-05
#include<stdio.h> #include<stdlib.h> //定義樹節點的結構 typedef struct Node { char data; struct Node *left, *right; }TNode, *TreeNode; int i = -1; //通過先序輸入建立二叉樹,然後通過中序遍歷輸出,使用二級指標 void InitTree(TreeNode *Tr,char* arr){ i++; if(arr[i] != '\0'){ if(arr[i] != '#'){ //分配記憶體 if(((*Tr) = (TreeNode)malloc(sizeof(TNode))) == NULL){ exit(0); }else{ (*Tr) ->data = arr[i]; (*Tr)->left = NULL; (*Tr)->right = NULL; InitTree(&((*Tr)->left),arr); InitTree(&((*Tr)->right),arr); } }else{ (*Tr) = NULL; } } } //中序列印 void Middle_Search(TreeNode head){ if(head){ Middle_Search(head->left); printf("%c",head ->data); Middle_Search(head->right); } } int main(){ char* arr = "5#6##"; TreeNode head= NULL; InitTree(&head,arr); Middle_Search(head); printf("\n"); return 0; }
結果: