【資料結構】二叉樹的構建及遍歷(遞迴演算法)
阿新 • • 發佈:2018-12-19
題目描述:
編一個程式,讀入使用者輸入的一串先序遍歷字串,根據此字串建立一個二叉樹(以指標方式儲存)。 例如如下的先序遍歷字串: ABC##DE#G##F### 其中“#”表示的是空格,空格字元代表空樹。建立起此二叉樹以後,再對二叉樹進行中序遍歷,輸出遍歷結果。
具體程式碼如下:
#include <stdio.h> #include <stdlib.h> #include <malloc.h> typedef struct BTNode { struct BTNode* _left; struct BTNode* _right; char _data; }BTNode; BTNode* CreateTree(char* str,int* pi) { if(str[*pi]=='#') { return NULL; } else { BTNode* root=(BTNode*)malloc(sizeof(BTNode)); root->_data=str[*pi]; (*pi)++; root->_left=CreateTree(str,pi); (*pi)++; root->_right=CreateTree(str,pi); return root; } } void InOrder(BTNode* root) { if(root==NULL) { return ; } else { InOrder(root->_left); printf("%c ",root->_data); InOrder(root->_right); } } int main() { char str[100]={0}; scanf("%s",str); int i=0; BTNode* tree=CreateTree(str,&i); InOrder(tree); return 0; }