二叉樹的基本運算

2022-09-18 08:27:20 字數 1803 閱讀 7754

//二叉樹的初始化操作。二叉樹的初始化須要將指向二叉樹的根結點指標置為空:

void initbittree(bitree *t)//二叉樹的初始化操作

//二叉樹的銷毀操作。

假設二叉樹存在。將二叉樹儲存空間釋放:

void destroybittree(bitree *t)//銷毀二叉樹操作

}//建立二叉樹操作。

依據二叉樹的遞迴定義,先生成二叉樹的根結點。將元素值賦給結點的資料域,然後遞迴建立

//左子樹和右子樹。當中『#』表示空:

void creatbittree(bitree *t)//遞迴建立二叉樹

}//二叉樹的左插入操作。

指標p指向二叉樹t的某個結點,將子樹c插入到t中,使c成為p指向結點的左子樹

//,p指向結點的原來左子樹成為c的右子樹:

int insertleftchild(bitree p,bitree c)//二叉樹的左插入操作

return 0;

}//二叉樹的右插入操作。指標p指向二叉樹t的某個結點,將子樹c插入到t中,使c成為p指向結點的右子樹

//。p指向結點的原來右子樹成為c的右子樹:

int insertrightchild(bitree p,bitree c)//二叉樹的右插入操作

return 0;

}/*返回二叉樹結點的指標操作。在二叉樹中查詢指向元素值為e的結點。假設找到該結點,則將該結點的指標

返回,否則,返回null。

詳細實現:定義乙個佇列q,用來存放二叉樹中結點的指標。從根結點開始,推斷結點的值是否等於e,假設

相等,則返回該結點的指標;否則,將該結點的左孩子結點的指標和右孩子結點的指標入佇列。假設結點存在

左孩子結點,則將其左孩子的指標入佇列;假設結點存在右孩子結點,則將其右孩子的指標入佇列。然後將

隊頭的指標出佇列。推斷該指標指向的結點的元素值是否等於e。假設相等,則返回該結點的指標,否則,繼續

將結點的左孩子結點的指標和右孩子結點的指標入佇列。

反覆此操作,直到隊列為空。

*/bitree point(bitree t,datatype e)//查詢元素值為e的結點的指標

if(p->rchild)//假設右孩子結點存在,將右孩子指標入隊

}} return null;

} //返回二叉樹的結點的左孩子元素值操作。

假設元素值為e的結點存在。而且該結點的左孩子結點存在,則將

//該結點的左孩子結點的元素值返回。

datatype leftchild(bitree t,datatype e)//返回二叉樹的左孩子結點元素值操作

return;

}//返回二叉樹的結點的右孩子元素值操作。假設元素值為e的結點存在,而且該結點的右孩子結點存在,則將

//該結點的右孩子結點的元素值返回。

datatype rightchild(bitree t,datatype e)//返回二叉樹的右孩子結點元素值操作

return;

}//二叉樹的左刪除操作。在二叉樹中,指標p指向二叉樹中的某個結點。將p所指向的結點的左子樹刪除。假設刪除

//成功。返回1。否則返回0.

int deleteleftchild(bitree p)//二叉樹的左刪除操作

return 0;

}//二叉樹的右刪除操作。在二叉樹中。指標p指向二叉樹中的某個結點,將p所指向的結點的右子樹刪除。

假設刪除

//成功,返回1,否則返回0.

int deleterightchild(bitree p)//二叉樹的右刪除操作

return 0;

}

二叉樹 基本運算

一 括號表示法建二叉樹 核心 void make btree print b view code 二 查詢節點 核心 btnode find node btnode b1,char x 查詢節點數值等於x的節點 view code 三 求樹高 核心 int get high const btnode...

二叉樹的基本運算

今天資料結構實驗課,做實驗,二叉樹的基本運算,題目要求挺長的,上課坐著沒事幹,寫了一點,放這以後還能看看。呵呵 題目要求 問題描述 建立一棵二叉樹,試程式設計實現二叉樹的如下基本操作 1.按先序序列構造一棵二叉鍊錶表示的二叉樹t 2.對這棵二叉樹進行遍歷 先序 中序 後序以及層次遍歷,分別輸出結點的...

二叉樹的基本運算

編寫乙個程式實現二叉樹的基本功能 1 使用者輸入字串建立二叉樹,a b d,e h j,k l,m n c f,g i 2 1 實現二叉樹的各種遍歷。包括先序遍歷 中序遍歷 後序遍歷的歸和非遞迴演算法 以及層次遍歷。2 要求能查詢任一結點在某種遍歷序列中的前驅和後繼。3 查詢輸出從根結點a出發到任意...