資料結構(四)之二叉樹
阿新 • • 發佈:2018-12-11
二叉樹可以用陣列和鏈式結構這兩種方式來建立,這裡只介紹二叉樹的鏈式結構,並且實現二叉樹的前序、中序和後序遍歷。(運用二叉樹組定義靜態二叉樹的方式以註釋的形式寫明)
二叉樹的建立有三種方式:前序、中序和後序。這裡只展現了前序遍歷的方式。
#include<stdio.h> #include<stdlib.h> typedef struct btnode{ //int data[1000];二叉樹組,從上到下,從左到右依次存在數組裡 char data; //int llink,rlink;靜態二叉樹,分別存放左子樹和右子樹 struct btnode *lchild; struct btnode *rchild; }BTnode,*BiTree;//tree[n+1];靜態二叉樹n個結點 void preorder(BiTree T); void midorder(BiTree T); void suborder(BiTree T); void createtree(BiTree &T); int main(){ BiTree T; /*以下是測試程式碼 createtree(T); preorder(T); printf("\n"); midorder(T); printf("\n"); suborder(T); printf("\n"); */ return 0; } void preorder(BiTree T){ if(T!=NULL){ printf("%c ",T->data); preorder(T->lchild); preorder(T->rchild); } } void midorder(BiTree T){ if(T!=NULL){ midorder(T->lchild); printf("%c ",T->data); midorder(T->rchild); } } void suborder(BiTree T){ if(T!=NULL){ suborder(T->lchild); suborder(T->rchild); printf("%c ",T->data); } } void createtree(BiTree &T){//先序遍歷建立 char ch; ch=getchar(); if(ch=='#') T=NULL; else{ T=(struct btnode*)malloc(sizeof(struct btnode)); T->data=ch; createtree(T->lchild); createtree(T->rchild); } }