二叉樹和二叉排序樹的操作

2021-10-05 21:53:42 字數 3093 閱讀 8287

參考書籍-王道-書籍結構-**已在vs2019驗證過!

二叉樹的建樹(層次建樹),前序、中序、後序遍歷、中序非遞迴遍歷、層次遍歷

//棧的相關資料結構

#define maxsize 50

typedef bitree elemtype;

typedef struct sqstack;

void initstack(sqstack& s);

bool stackempty(sqstack& s);

bool push(sqstack& s, elemtype x);

bool pop(sqstack& s, elemtype& x);

bool gettop(sqstack& s, elemtype& x);

//佇列的相關資料結構

typedef struct linknode linknode;

typedef struct linkqueue;

void initqueue(linkqueue& q);

bool isempty(linkqueue q);

void enqueue(linkqueue& q, elemtype x);

bool dequeue(linkqueue& q, elemtype& x);

/******************遞迴實現****************************/

//前序遍歷=abdhiejcfg

void preorder(bitree p)

}//中序遍歷  hdibjeafcg

void inorder(bitree p)

}//後續遍歷hidjebfgca

void postorder(bitree p)

}/******************非遞迴實現*************************/

//中序遍歷非遞迴,非遞迴執行效率更高

void inorder2(bitree t)

else }}

//層次遍歷,廣度優先遍歷

void levelorder(bitree t)

}/******************層次建樹*************************/

//二叉樹的建樹(層次建樹)

bitree inittree()

pnew = (bitree)calloc(1, sizeof(bitnode));//calloc申請空間並對空間進行初始化,賦值為0

pnew->c = c;

listpnew = (ptag_t)calloc(1, sizeof(tag_t));

listpnew->p = pnew;

if (null == tree)

else

if (null == pcur->p->lchild)

else if (null == pcur->p->rchild)

}return tree;

}// 二叉樹的建樹(層次建樹),前序、中序、後序遍歷、中序非遞迴遍歷、層次遍歷

int main()

二叉排序樹的遍歷和搜尋

}//遞迴演算法簡單,但執行效率較低,實現留給大家編寫

bstnode* bst_search(bitree t, keytype key, bitree& p)

return t;

}//這個書上沒有

void deletenode(bitree& root, keytype x)

if (root->key > x)

else if (root->key < x)

else

else if (root->rchild == null)

else

root->key = tempnode->key;

deletenode(root->lchild, tempnode->key);

} }}void inorder(bitree t)

}int main()

; printf("\n建立二叉排序樹:");

creat_bst(t, str, 7);

inorder(t);

printf("\n");

search = bst_search(t, 41, parent);

if (search)

else

deletenode(t, 40);

inorder(t);

printf("\n");

system("pause");

}

二叉樹,完全二叉樹,滿二叉樹,二叉排序樹

二叉樹 二叉樹是每個節點最多有兩個子樹的樹結構 是n n 0 個結點的有限集合,它或者是空樹 n 0 或者是由乙個根結點及兩顆互不相交的 分別稱為左子樹和右子樹的二叉樹所組成。完全二叉樹 除最後一層外,每一層上的結點數均達到最大值 在最後一層上只缺少右邊的若干結點 樹中所含的n個節點和滿二叉樹中編號...

二叉樹(四) 二叉排序樹

二叉排序樹或者非空二叉樹,或者為具有以下性質的二叉樹 1 若根結點的左子樹不空,則左子樹上所有結點的值都小於根結點的值 2 若根結點的右子樹不空,則右子樹上所有結點的值都大於或者等於根結點的值 每一棵子樹分別也是二叉排序樹。上述定義為遞迴定義 如下圖 該二叉樹的中序序列如下 10,30,35,38,...

二叉搜尋樹(二叉排序樹)

描述 判斷兩序列是否為同一二叉搜尋樹序列 題目類別 樹 難度 中級 執行時間限制 10sec 記憶體限制 128mbyte 階段 入職前練習 輸入 開始乙個數n,1 n 20 表示有n個需要判斷,n 0 的時候輸入結束。接下去一行是乙個序列,序列長度小於10,包含 0 9 的數字,沒有重複數字,根據...