排序二叉樹的實現

2021-06-22 23:17:25 字數 881 閱讀 8943

在電腦科學中,二叉樹是一種重要的非線性的資料結構。每個結點的度均小於等於2,通常子樹稱為左子樹和右子樹。而排序二叉樹是二叉樹中的一種,其滿足:1. 如左子樹不為空,那麼左子樹上的結點的值都小於其根上的值;2. 如右子樹不為空,那麼右子樹上的結點的值都大於其根上的值; 3. 其子樹也是乙個排序二叉樹。

下面用遞迴的方式來插入乙個結點來滿足上述的要求:

typedef struct node

node,*lnode;

void _insert1(lnode &t1,int key)

else

}

首先定義了乙個二叉樹結點的結構體,然後採用遞迴的方式建立了滿足上述排序二叉樹要求的插入函式;

下面定義中序遍歷函式,使得排序二叉樹上的資料元素按照公升序的方式輸出列印:

void inorder(lnode t1)

}

然後定義乙個查詢函式,以遞迴的方式實現,若查詢的元素比根節點的元素大則在右子樹中繼續查詢,反之在左子樹中繼續查詢:

lnode _find(lnode t1,int key)

if(t1->data==key) return t1;

else

else

}}

最後定義乙個計算排序二叉樹的深度的函式:同樣適用遞迴的方式實現:

int _deep(lnode t1)

if(r>l) return r+1;

else return l+1;

}

測試**如下:

void main()

inorder(l1);

cout<

二叉樹 排序二叉樹的簡單實現

二叉樹 排序二叉樹 include using namespace std 二叉樹的節點 date 資料 left 指向二叉樹的左子樹 right 指向二叉樹的右子樹 template struct node template class btree public btree root null c...

二叉樹,排序二叉樹

說到二叉樹,這可是資料結構裡面的非常重要的一種資料結構,二叉樹是樹的一種,本身具有遞迴性質,所以基於二叉樹的一些演算法很容易用遞迴演算法去實現。作為一種非線性結構,比起線性結構還是相對複雜的,很多人甚至看不懂演算法的意思,不能理解。其實一開始接觸這些東西還是挺暈的,不過你多看幾遍,上機實現可能你就會...

排序二叉樹的實現

coding utf8 class node def init self,item self.item item self.left none self.right none class sorttree def init self self.root none defadd self,item n...