C 二叉鍊錶的模板實現

2021-09-19 09:37:10 字數 2110 閱讀 4279

c++二叉鍊錶的模板實現

#pragma once

//二叉鍊錶的實現

#include #include #include using namespace std;

templatestruct binode

;templatestruct forpost

;templateclass bitree

​ ~bitree()

​ void preorder()

​ void inorder()

​ void postorder()

​ void leverorder();

private:

​ binode* root;

​ binode* creat(binode* bt);

​ void release(binode* bt);

​ void preorder(binode* bt);

​ void inorder(binode* bt);

​ void postorder(binode* bt);

};//遞迴演算法

templatevoid bitree::preorder (binode* bt)

​ else​ }

templatevoid bitree::inorder (binode* bt)

​ else​ }

templatevoid bitree::postorder(binode* bt)

​ else​ }

// 1、佇列q初始化

// 2、如果二叉樹非空,將根指標入隊

// 3、迴圈直到佇列q為空

// 3.1、q=佇列q的隊頭元素出隊

// 3.2、訪問節點q的資料域

// 3.3、如節點q存在左孩子,則將左孩子指標入隊

// 3.4、如節點q存在右孩子,則將右孩子指標入隊

// templatevoid bitree::leverorder ()

​ queueq;

​ binode* q;

​ q[++rear] = root; //根指標入隊

​ while (front != rear) //當佇列非空

​ ​ if (q->rchild != null)

​ ​ }

}templatebinode* bitree::creat(binode* bt)

​ else

​ ​ return bt;

};templatevoid bitree::release(binode* bt) }

//非遞迴

// 1、棧s初始化

// 2、迴圈直到bt為空且棧s為空

// 2.1、當bt不為空時迴圈

// 2.1.1、輸出bt->data

// 2.1.2、將指標bt儲存到棧中

// 2.1.3、繼續遍歷bt的左子樹

// 2.2、如果棧s不為空

// 2.2.1、將棧頂元素彈出至bt

// 2.2.2、準備遍歷bt右子樹

templatevoid bitree::preorder (binode* bt)

​ if (top != -1)

​ ​ }

}templatevoid bitree::inorder (binode* bt)

​ if (top != -1)

​ ​ }

}// 1、棧s初始化

// 2、迴圈直到bt為空且棧為空

// 2.1、當bt非空時迴圈

// 2.2.1、將bt連同標誌flag=1入棧

// 2.2.2、繼續遍歷bt的左子樹

// 2.2、當棧s非空且棧頂元素的標誌為2時,出棧並輸出棧頂結點

// 2.3、若棧非空,將棧頂元素的標誌改為2,準備遍歷棧頂結點的右子樹

templatevoid bitree::postorder (binode* bt)

​ while (top != -1 && s[top].flag = 2)

​ ​ if (top != -1)

​ ​ }

}

二叉查詢樹 模板實現 C

二叉查詢樹 模板實現 c 1 二叉查詢樹的性質 對於樹中每個結點x,它的左子樹中所有項的值小於x中的值,而它的右子樹中所有項的值大於x中的值。2 二叉樹的操作主要是 插入,刪除,查詢。2.1 查詢 contains 實現思路 如果待查詢的項x在樹中,返回true 否則返回false。若當前比較的結點...

c 模板實現 二叉查詢樹

搗鼓了乙個晚上,最後還是照著書本把這bst弄出來了。悲催的娃娃啊,不動手寫這個還真的很難啊!1 ifndef btree h 2 define btree h 34 include 5 using std ostream 67 template 8class bstree917 bstnode tr...

C 模板實現二叉搜尋樹

二叉搜尋樹的增刪該查操作實現 插入操作 借助輔助遞迴函式node insert node node,key key,value value 像根節點為node的二叉搜尋樹插入乙個資料,返回值為根節點,如果node null,那麼新建乙個節點返回,如果keykey,則插入到左子樹,當前返回的根節點為左...