java的数据结构
本文轉自互聯網
1、二叉樹:非線性數據結構,常被用于實現二叉查找樹和二叉堆
二叉樹的第i層至多有2的 i -1次方個結點;深度為k的二叉樹至多有2^(k) -1個結點;對任何一棵二叉樹T。
滿二叉樹
完全二叉樹
平衡二叉樹
2、
二叉樹的遍歷:
遍歷是對樹的一種最基本的運算,所謂遍歷二叉樹,就是按一定的規則和順序走遍二叉樹的所有結點,使每一個結點都被訪問一次,而且只被訪問一次。由于二叉樹是非線性結構,因此,樹的遍歷實質上是將二叉樹的各個結點轉換成為一個線性序列來表示。
遞歸算法:
?
<1>先序遍歷:
?
<2>中序遍歷
<3>后序遍歷
<4>層次遍歷
?
非遞歸算法:
<1>先序遍歷:
【思路】:訪問T->data后,將T入棧,遍歷左子樹;遍歷完左子樹返回時,棧頂元素應為T,出棧,再先序遍歷T的右子樹。
<2>中序遍歷
<3>后序遍歷
<4>層次遍歷
即按照層次訪問,通常用隊列來做。訪問根,訪問子女,再訪問子女的子女(越往后的層次越低)(兩個子女的級別相同)
3、二叉樹查找
查找樹的創建(createTree)
java培訓的時候老師給舉了一個例子,假設有如下數組4,1,45,78,345,23,12,3,6,21
首先選定4為root,然后遍歷剩下的數字,如果大于等于4則放到4的右側,小于4放到4的左側,最后構建成的樹:所有的左孩子都小于父節點,所有的右孩子都大于等于父節點。如下圖:
?
?
2. ? ? ?遍歷查找樹(displayTree)
按照左中右的順序遍歷樹,結果為:1,3,4,6,12,21,23,45,78,345,遍歷的結果就是已經排好序的數字。
?
3.??????查找樹中的節點(searchTree)
從根節點開始,如果大于等于根節點,則查找根節點的右側;如果小于根節點,則查找根節點的左側,直到查找到節點。
比如要查找12:
比4大,往右走;
??????? 比45小,往左走;
??????? 比23小,往左走;
??????? 找到12
?
4、二叉排序樹
轉載于:https://www.cnblogs.com/jinshiyill/p/4682744.html
總結
- 上一篇: (九十三)蓝牙的基本使用
- 下一篇: Fragment 横竖屏切换问题