資料結構實踐 二叉樹排序樹中查詢的路徑

2021-09-23 17:58:13 字數 1429 閱讀 4044

本文是[資料結構基礎系列(8):查詢]中的實踐專案參考。

【專案 - 二叉樹排序樹中查詢的路徑】

設計乙個演算法,輸出在二叉排序中查詢時查詢某個關鍵字經過的路徑。

[參考解答]

專為本專案設計的演算法體現在函式int searchbst(…)和void searchresult()中。

#include 

#include

#define maxsize 100

typedef

int keytype; //定義關鍵字型別

typedef

char infotype;

typedef

struct node //記錄型別

bstnode;

int path[maxsize]; //全域性變數,用於存放路徑

void dispbst(bstnode *b); //函式說明

int insertbst(bstnode *&p,keytype k) //在以*p為根節點的bst中插入乙個關鍵字為k的節點

else

if (k==p->key)

return

0; else

if (kkey)

return insertbst(p->lchild,k); //插入到*p的左子樹中

else

return insertbst(p->rchild,k); //插入到*p的右子樹中

}bstnode *creatbst(keytype a,int n)

//由陣列a中的關鍵字建立一棵二叉排序樹

//在二叉排序樹中查詢,記經過的節點記錄在path中,返回值為最後查詢節點在path中儲存的下標

int searchbst(bstnode *bt,keytype k,keytype path,int i)

else

}//查詢並顯示經過的路徑

void searchresult(bstnode *bt, int k1)

void dispbst(bstnode *bt)

//以括號表示法輸出二叉排序樹bt

}}int main()

,n=10;

printf("建立的bst樹:");

bt=creatbst(a,n);

dispbst(bt);

printf("\n");

printf(" 查詢%d關鍵字:",k1);

searchresult(bt,k1);

printf(" 查詢%d關鍵字:",k2);

searchresult(bt,k2);

return

0;}

資料結構 排序二叉樹

排序二叉樹即在構建二叉樹的時候就對二叉樹進行排序了,當中序遍歷二叉樹的時候即可得到乙個有序的數列 排序二叉樹的規則就是 若他的左子樹不空,則左子樹上所有結點的值均小於它的根結構的值 若他的右子樹不空,則右子樹上所有結點的值均大於它的根結點的值 它的左 右子樹也分別為二叉排序樹 從二叉排序樹的定義也可...

資料結構 樹,二叉樹

樹 1 樹是n n 0 個有限個資料的元素集合,形狀像一顆倒過來的樹。2 節點 結點包含資料和指向其它節點的指標。3 根節點 樹第乙個結點稱為根節點。4 結點的度 結點擁有的子節點個數。5 葉節點 沒有子節點的節點 度為0 6 父子節點 乙個節點father指向另乙個節點child,則child為孩...

資料結構 二叉樹 反轉二叉樹

include using namespace std define maxsize 1000 struct binary tree node class queue queue queue void queue push binary tree node btn binary tree node ...