C 資料結構 17 二叉查詢樹

2021-08-29 20:42:21 字數 1847 閱讀 8821

**:

#ifndef __bst_h__

#define __bst_h__

#includeusing namespace std;

template class bst; //宣告

enum boolean ;

templateclass element //資料

;templateclass bstnode //定義結點

;templateclass bst //定義二叉查詢樹

boolean insert(element&x); //插入元素

bstnode* search(const element&x); //遞迴查詢

bstnode* search(bstnode*p,const element&x);

bstnode* itearsearch(const element&x); //採用迭代方式查詢

void display()

void preorder(bstnode*currentnode); //前序遍歷

void inorder(bstnode*currentnode); //中序遍歷

void postorder(bstnode*currentnode);//後序遍歷

void vivit(bstnode*currentnode); //當前節點

//private:

bstnode*root; //根結點

};templatevoid bstnode::display(int i) //顯示資料

templateboolean bst::insert(element&x) //插入資料

//找到的位置就是q

p=new bstnode;

p->leftchild=p->rightchild=0; //剛開始令左孩子和右孩子都等於0

p->data=x;

if(!root) root=p; //如果根不存在 p就是根

else if(x.key>q->data.key) q->rightchild=p; //鍵值比父節點大,則放到右孩子

else q->leftchild=p; //否則,放到左孩子

return true; //返回正確

}templatebstnode* bst::search(const element&x) //查詢

templatebstnode* bst::search(bstnode*p,const element&x)

templatebstnode* bst::itearsearch(const element&x)//採用迭代方式查詢

//迴圈結束都沒找到

return 0; //

}static int cnt=0; //節點數

/*遍歷*/

templatevoid bst::vivit(bstnode*currentnode)

templatevoid bst::preorder(bstnode*currentnode)//前序遍歷

}templatevoid bst::inorder(bstnode*currentnode)//中序遍歷

}templatevoid bst::postorder(bstnode*currentnode)//後序遍歷

}#endif // __bst_h__

main

#include #include "bst.h"

using namespace std;

int main()

(資料結構)二叉查詢樹

樹,是一種資料結構。它是由n個有限節點組成乙個具有層次關係的集合。特點 樹的基本術語 節點的度 節點擁有的子樹的數目。葉子 度為零的節點。分支節點 度不為零的節點。樹的度 樹中節點的最大的度。層次 根節點的層次為1,其餘節點的層次等於該節點的雙親的層次加1。樹的高度 樹中節點的最大層次。無序樹 如果...

資料結構 二叉查詢樹

使二叉樹成為二叉查詢樹的性質是,對於樹中的每個節點x,它的左子樹中所有關鍵字值小於x的關鍵字值,而它的右子樹中所有關鍵字值大於x的關鍵字值。這意味著,該樹所有的元素以某種統一的方式排序。二叉查詢樹是一棵特殊的二叉樹,二叉查詢樹中節點的結構與二叉樹種節點的結構相同,關鍵在於可以在二叉查詢樹上可以執行的...

資料結構 樹 二叉查詢樹

wiki 首先是名稱 二叉查詢樹英文叫binary search tree,這個在很多演算法題目中很常見所以要記住,特別是英文題目中。也叫做二叉排序樹,二叉搜尋樹等等。具體的定義比較官方,用自己的話說,首先它肯定是二叉樹,其次,當前節點的左子葉元素值比當前節點小,右子葉元素值比當前節點大,所以節點均...