二叉樹,排序二叉樹

2021-06-08 22:51:15 字數 1213 閱讀 1121

說到二叉樹,這可是資料結構裡面的非常重要的一種資料結構,二叉樹是樹的一種,本身具有遞迴性質,所以基於二叉樹的一些演算法很容易用遞迴演算法去實現。作為一種非線性結構,比起線性結構還是相對複雜的,很多人甚至看不懂演算法的意思,不能理解。其實一開始接觸這些東西還是挺暈的,不過你多看幾遍,上機實現可能你就會覺得沒那麼複雜。因為你最後會發現,這些資料結構對於提高程式設計的能力有很大幫助,也是軟體開發中必不可少的。

二叉樹表示方法一般有兩種,第一種一般是順序儲存結構,將二叉樹中的節點資訊存入乙個一維陣列中。

第二種也是比較常用的方法,用鍊錶表示,其節點有值,左子樹指標和右子樹指標,有時候為了演算法方便,也許會有雙親節點指標。其結構一般如下:

//blg樹的鍊錶表示形式

typedef struct blgnode

blgnode,* blgtree;

這裡沒有用到泛型,就用了整型值作為代表。

二叉排序樹也是一種二叉樹,也叫做二叉搜尋樹,是一種動態的搜尋結構,它的左子樹的節點的值小於根節點的值,右子樹節點的值大於根節點的值,左右子樹也分別是一棵二叉排序樹。它的中序遍歷就是值得公升序排序。所以這種樹叫做排序樹。

下面就是相關的實現**,

void initbtree(struct blgnode **bt)

bool emptyblgtree(blgtree bt)

return 0;

}int blgtreedepth(blgtree &bt)

else

else

}}void clearblgtree(blgtree *bt)

return;

}void preorder(blgtree &bt)

return;

}void inorder(blgtree &bt)

return;

}void postorder(blgtree &bt)

return;

}int insertblg(blgtree& bt,int e)

else

else

return 1;

} return 0;

}void createblgtree(blgtree& bt,int* value,int cnt)

return;

}

上面的**經過測試可用,如果還需要什麼地方改進,大家都可以討論。

排序二叉樹or搜尋二叉樹or查詢二叉樹

排序二叉樹,搜尋二叉樹,查詢二叉樹都是乙個意思,只是叫法不同而已。下面的文章中我們統稱為排序二叉樹。本文主要是針對高中資訊學,因此其中不涉及到指標,所有需要用指標的地方都直接使用陣列進行模擬。排序二叉樹定義 1 若左子樹不空,則左子樹上所有結點的值均小於或等於它的根結點的值 2 若右子樹不空,則右子...

排序二叉樹or搜尋二叉樹or查詢二叉樹

排序二叉樹,搜尋二叉樹,查詢二叉樹都是乙個意思,只是叫法不同而已。下面的文章中我們統稱為排序二叉樹。本文主要是針對高中資訊學,因此其中不涉及到指標,所有需要用指標的地方都直接使用陣列進行模擬。排序二叉樹定義 1 若左子樹不空,則左子樹上所有結點的值均小於或等於它的根結點的值 2 若右子樹不空,則右子...

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

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