Day 21 22 樹 二叉鍊錶使用

2021-08-22 10:32:54 字數 2904 閱讀 7919

#include

#include

#define max 20

typedef

char elementtype;

typedef

struct treenode

*treenode;

void init(treenode* t);//初始

化樹void create1(treenode* t);//非遞

歸的方式

建立樹

void create2(treenode *t);//使用

遞迴建立

樹 void previsit(treenode t);//前序

遍歷樹先

訪問根節

點再訪問

左子樹再訪

問右子樹

void midvisit(treenode t);//中序遍

歷樹void tailvisit(treenode t);//後序遍

歷樹void levelvisit(treenode t);//按層

遍歷樹

int depth(treenode t);//返回

樹的深度

void update(treenode t,elementtype old_value,elementtype new_value);//將樹

中所有的

old_value值更

新為new_value

void print(treenode t);//以廣義

表示法進

行輸出

void display(treenode t,int format);//以目

錄表示法進

行輸出void clear(treenode* t);//清空

樹 char *string = "a(b(d,e(g,h)),c(f( ,i), ))";//廣義

表示法

char *str = "abd##ea##h##ca#i###";//擴充套件

二叉樹

int main()

void init(treenode* t)//初始

化樹//char *string = "a(b(d,e(g,h)),c(f( ,i), ))";

void create1(treenode* t)//非遞

歸的方式

建立樹top++;

s[top] = p;

flag = 1;

break;

case

',':

flag = 2;

break;

case

')':

if(-1 == top)

top--;

break;

default:

p = (treenode)malloc(sizeof(struct treenode));

if(null == p)

p->value = *(string + i);

p->left = null;

p->right = null;

if(null == *t)

else

else }

break;

}i++;}}

//char *str = "abd##eg##h##cf#i###";

void create2(treenode* t)//使用

遞迴建立

樹 else

(*t)->value = ch;

create2(&((*t)->left));

create2(&((*t)->right));}}

void previsit(treenode t)//前序

遍歷樹先

訪問根節

點再訪問

左子樹再

訪問右子

樹 }void midvisit(treenode t)//中序

遍歷樹

}void tailvisit(treenode t)//後序

遍歷樹

}void levelvisit(treenode t)//按層

遍歷樹

;//模擬佇列

int front = 0;

int rear = 0;

if(t != null)

while(front != rear)

if(null != array[front]->right)

front = (front+1) % max;}}

int depth(treenode t)//返回

樹的深度

else }

//將樹中

所有的old_value值更

新為new_value

void update(treenode t,elementtype old_value,elementtype new_value)

update(t->left,old_value,new_value);

update(t->right,old_value,new_value);}}

void print(treenode t)//以廣

義表示法

進行輸出

else

printf(",");

if(null == t->right)

else

printf(")");:êo}}

}void display(treenode t,int format)//以°?

目錄表示法

進行輸出

format為空

格的個數

printf("%c\n",t->value);

display(t->left,format+1);

display(t->right,format+1);}}

void clear(treenode* t)//清空樹 }

二叉樹 二叉鍊錶

include using namespace std typedef char elemtype int n 0 typedef struct binode binode class bitree bitree binode getroot void preorder binode root 前序...

二叉樹(二叉鍊錶實現)

二叉鍊錶結構的二叉樹模型,棧用自己寫的模版,佇列就不了 直接用stl的,不然 太長了 檔案 tree.h include include includeusing namespace std templateclass my stack templateclass node 結點類 node t d...

二叉鍊錶儲存二叉樹

鏈式儲存結構 二叉樹的鏈式儲存結構是指,用鍊錶來表示一棵二叉樹,即用鏈來指示元素的邏輯關係。其中,data域存放某結點的資料資訊 lchild與rchild分別存放指向左孩子和右孩子的指標,當左孩子或右孩子不存在時,相應指標域值為空 用符號 或null表示 利用這樣的結點結構表示的二叉樹的鏈式儲存結...