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...