1. 程式人生 > >資料結構 C語言 鏈式二叉樹

資料結構 C語言 鏈式二叉樹

【問題描述】
採用二叉連結串列作為二叉樹的儲存結構實現各項功能
【任務要求】
(1) 輸入二叉樹的先序序列,建立二叉樹;
(2) 用程式實現二叉樹的中序遍歷;
(3) 編寫程式求二叉樹的深度;
【測試資料】
測試資料:(1)輸入先序遍歷-+a##*b##-c##d##/e##f##;檢視其中序遍歷、後序遍歷和該二叉樹的深度。
(2)輸入先序遍歷ab#d##ce###;檢視其中序遍歷、後序遍歷和該二叉樹的深度。

#include<stdio.h>
#include<stdlib.h>

int depth = 0;

typedef struct node{
    char ch;
    struct node *lchild
, *rchild; }linkTree; linkTree *createTree() { linkTree *t; char temp; scanf("%c", &temp); if (temp == '#') { t = NULL; } else { t = (linkTree*)malloc(sizeof(linkTree)); t->ch = temp; t->lchild = createTree(); t->rchild = createTree(); } return
t; } int preOrder(linkTree *t) { if (t != NULL) { printf("%c", t->ch); preOrder(t->lchild); preOrder(t->rchild); } } int inOrder(linkTree *t) { if (t != NULL) { inOrder(t->lchild); printf("%c", t->ch); inOrder(t->rchild); } } int
postOrder(linkTree *t) { if (t != NULL) { postOrder(t->lchild); postOrder(t->rchild); printf("%c", t->ch); } } int treeDeep(linkTree *t, int level) { if (t) { if (level > depth) { depth = level; } treeDeep(t->lchild, level + 1); treeDeep(t->rchild, level + 1); } } int main() { linkTree *t = createTree(); int level = 1; printf("\n"); preOrder(t); printf("\n"); inOrder(t); printf("\n"); postOrder(t); printf("\n"); treeDeep(t, level, &depth); printf("depth:%d", depth); system("pause"); return 0; }