C 先序字串建立二叉樹並中序遍歷

2021-08-19 06:01:15 字數 928 閱讀 7671

編乙個程式,讀入使用者輸入的一串先序遍歷字串,根據此字串建立乙個二叉樹(以指標方式儲存)。例如如下的先序遍歷字串:abc##de#g##f###其中「#」表示的是空格,空格字元代表空樹。建立起此二叉樹以後,再對二叉樹進行中序遍歷,輸出遍歷結果。

輸入包括1行字串,長度不超過100。
可能有多組測試資料,對於每組資料,

輸出將輸入字串建立二叉樹後中序遍歷的序列,每個字元後面都有乙個空格。

每個輸出結果佔一行。

示例1

abc##de#g##f###

c b e g d f a

**:

#include #include #include #define n 101

struct node;

node *createnode()//建立新節點,返回結點指標

void inorder(node *t)//中序遍歷

void del(node *t)//刪除樹

if(t->rchild!=null)//刪除右子樹

free(t);//刪除根節點}

unsigned pos;//標記字串處理到哪了

char str[n];//讀取的字串

node *buildtree()//根據字串創立二叉樹,並返回根節點指標

node *p=createnode();//建立乙個空節點

p->c=str[pos++];//先序,先獲取根節點的字元資訊

p->lchild=buildtree();//建立左子樹

p->rchild=buildtree();//建立右子樹

return p;//完事,返回根節點指標}

int main()

}

二叉樹建立(先序)

建立二叉樹可根據輸入乙個串先序 中序或後序建立,如本篇中以1 2 4 1 1 1 3 5 1 1 1為例,數字 1為空結點,先序 中序 後序沒什麼太大區別,僅僅時對結點資料賦值的時間不同,建立運用遞迴思想。遍歷可先 中 後序,也可層序遍歷。層序遍歷可以運用佇列,每pop出乙個資料,push進相應的左...

先序建立二叉樹及先序 中序 後序遍歷

先序二叉樹 先序建立二叉樹 void createbitree bitree t t bitnode malloc sizeof bitnode t data cnt t lchild null t rchild null createbitree t lchild createbitree t r...

通過先序和中序建立二叉樹

include iostream include queue using namespace std int x 1000 z 1000 struct tree void xzcreate tree t,int xl,int zl,int len for int i 0 z i zl x xl i ...