在電腦科學中,二叉樹是一種重要的非線性的資料結構。每個結點的度均小於等於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...