二叉樹的遍歷,葉子數目以及深度

2021-07-26 17:39:44 字數 2086 閱讀 1805

problem description

已知乙個按先序序列輸入的字串行,如abc,,de,g,,f,,,(其中逗號表示空節點)。請建立二叉樹並按中序和後序方式遍歷二叉樹,最後求出葉子節點個數和二叉樹深度。

input

輸入乙個長度小於50個字元的字串。

output

輸出共有7行:

第1行輸出前序遍歷序列;

第2行輸出中序遍歷序列;

第3行輸出後序遍歷序列;

第4行輸出層序遍歷序列;

第5行輸出葉子節點個數;

第6行輸出葉子節點(從上到下,從左到右);

第7行輸出二叉樹深度。

example input

abc,,de,g,,f,,,

example output

abcdegf

cbegdfa

cgefdba

abcdefg

3 cfg 5建樹

struct node *creat(struct node *t)

return t;

}

前序遍歷

void qianxu(struct node *t)

}

中序遍歷

void zhonxu(struct node *t)

}

後序遍歷

void houxu(struct node *t)

}

層序遍歷

void cengxu(struct node *t)

out ++;

} }

葉子個數

void num(struct node *t)

}}

葉子節點(從上到下,從左到右)

由層序遍歷修改而得

void cengxunum(struct node *t)

else

}out ++;

}}

二叉樹深度

int depth(struct node *t)

return

0; }

最終**:

#include

#include

#include

#include

struct node

tree;

struct node *creat(struct node *t);

void qianxu(struct node *t);

void zhonxu(struct node *t);

void houxu(struct node *t);

void cengxu(struct node *t);

void num(struct node *t);

void cengxunum(struct node *t);

int depth(struct node *t);

char str[1050];

int i;

int count = 0;

int main()

return

0; }

struct node *creat(struct node *t)

return t;

}void zhonxu(struct node *t)

}void houxu(struct node *t)

}void qianxu(struct node *t)

}void cengxu(struct node *t)

out ++;

} }void num(struct node *t)

}} void cengxunum(struct node *t)

else

}out ++;

}} int depth(struct node *t)

return

0; }

二叉樹 遍歷,葉子數,深度問題

1.sdut 3341 遍歷二叉樹 problem description 已知二叉樹的先序遍歷字串行,如abc,de,g,f,其中,表示空結點 請建立二叉樹並按中序和後序的方式遍歷該二叉樹。input 連續輸入多組資料,每組資料輸入乙個長度小於50個字元的字串。output 每組輸入資料對應輸出2...

輸出二叉樹葉子節點 葉子節點數目 二叉樹高度

include include 輸出二叉樹葉子節點 葉子節點數目 二叉樹高度 include typedef int datatype int count 0 用於統計葉子節點的數目 typedef struct node bitnode,bittree void creatbitree bittr...

求二叉樹的葉子節點數目

1.設定乙個輔助計數變數作為葉子數目 2.分別遞迴訪問左右子樹,當結點的左右子樹都為空時,計數變數加1 3.得到計數變數的值即為葉子數目 typedef struct binarynodebinarynode param int leafnum 傳入計數變數的位址,通過指標修改變數的值 leafnu...