Java 二叉樹簡要解析(持續學習和整理)

2021-07-11 13:59:03 字數 1004 閱讀 2598

1.treeset底層資料結構為二叉樹,也叫紅黑樹,其排序原理為以頭乙個插入的元素為根節點,每次從根節點起,compareto方法比較結果為負的放左邊,為正的放右邊,為0的為重複元素,不插入。結構如圖:

發現整體來看,越靠左的枝杈元素「值」越小,左側末端最小,越靠右的枝杈元素越大,右末端最大。但包含左右兩叉的子樹整體都比根節點小。

從提高效率的角度,如果每次都從始祖節點查詢,則效率低下,一般會取乙個折衷值,就是查詢子樹。子樹不符合條件,再層層向上找。

如果是從小到大取,取的順序:先左叉(最左邊末端),先子樹(至最右末端再上溯),(遞迴)查詢:

應用:treeset按照存的順序,順序儲存;按照存的順序,逆序儲存------------>將compareto方法直接return 1或return -1

例子:person物件的compareto方法:

public int compareto(object obj)
測試程式:

public class treesetdemo 

}

執行結果:

[lisi...29, lisi...30, lisi...30, liasi...29]--------->注意,不管什麼年齡姓名了,統統按存的順序新增,底層二叉樹新增過程如圖(資料不一樣,僅示意):

如果要求逆序儲存,只需將compareto直接return -1,示意圖:

二叉樹遍歷解析

今天來總結下二叉樹前序 中序 後序遍歷相互求法,即如果知道兩個的遍歷,如何求第三種遍歷方法,畫出來二叉樹,然後根據各種遍歷不同的特性來求,下面我們分別說明。首先,我們看看前序 中序 後序遍歷的特性 前序遍歷 訪問順序 根 左子樹 右子樹 中序遍歷 訪問順序 左 右子樹 後序遍歷 訪問順序 左 右根1...

二叉樹 二叉樹

題目描述 如上所示,由正整數1,2,3 組成了一顆特殊二叉樹。我們已知這個二叉樹的最後乙個結點是n。現在的問題是,結點m所在的子樹中一共包括多少個結點。比如,n 12,m 3那麼上圖中的結點13,14,15以及後面的結點都是不存在的,結點m所在子樹中包括的結點有3,6,7,12,因此結點m的所在子樹...

簡要概括二叉樹遍歷方法

二叉樹遍歷方法有三種 規則 所訪問的順序 前序遍歷 根左右 中序遍歷 左根右 後序遍歷 左右根 簡記 前中後指的是根的位置 比如後序遍歷,則根在其左 右子樹的後面,就是最後訪問根 網上找的 比如說後序遍歷 規則是左右根 由圖看出,首先a是根,b c是它的左右子樹,根據規則,先訪問的是左子樹b 此時因...