普通二叉樹:對二叉樹的結點沒有位置及數量上的要求
滿二叉樹: 乙個二叉樹,如果每乙個層的結點數都達到最大值,則這個二叉樹就是滿二叉樹。也就是說,如果乙個二叉樹的層數為k,且結點總數是(2^k) -1 ,則它就是滿二叉樹。
有序二叉樹(又稱二叉排序樹,又稱二叉查詢樹,亦稱二叉搜尋樹):左子樹的所有結點都比雙親小,右子樹的所有結點都比雙親大
平衡二叉樹:左右高度相差不超過1的有序二叉樹 (首先是有序的二叉樹,樹的左右子樹的高度相差不超過1,並且子樹的子樹都滿足這個要求)
紅黑樹:實現平衡的一種手段 結點只有兩種顏色:紅和黑; 根節點是黑色;從任一節點到其每個葉子的所有路徑都包含相同數目的黑色節點。
線索二叉樹 :在二叉樹的結點上加上線索的二叉樹
平衡二叉搜尋樹:平衡二叉樹和二叉搜尋樹的結合的結合
完全二叉樹:若設二叉樹的深度為h,除第 h 層外,其它各層 (1~h-1) 的結點數都達到最大個數,第 h 層所有的結點都連續集中在最左邊,這就是完全二叉樹。
完全二叉樹的特點:
1.葉子結點在層次最大的兩層出現;
2.滿二叉樹是完全二叉樹,完全二叉樹不一定是滿二叉樹
3.在完全二叉樹中,若某個結點沒有左孩子,則它一定沒有右孩子,即該結點必是葉結點。
4.完全二叉樹中,度為1的節點只能是1或者0個
完全二叉樹的性質:
1.n個結點的完全二叉樹的深度為大於以2為底n+1的對數的最小整數(>log2(n+1)的最小整數)。
2.將完全二叉樹自頂而下,同一層自左向右編號,則有:
如果i=1,i為根,無雙親;如果i>1,雙親為結點 i/2
如果2i<=n,結點i的左孩子為結點2i;否則無左孩子
如果2i+1<=n,結點i的右孩子為結點2i+1,否則無右孩子
結點i所在的層次為log2n+1
i為奇數,且i!=1,i處於右兄弟的位置,它的左兄弟為結點i-1
i為偶數,且i!=n,i處於左兄弟的位置,它的右兄弟為結點i+1
3.2^(k-1) 或 pow(2,k-1) 算k層結點數
4.一棵有124個葉結點的完全二叉樹,最多有248個結點 (248=124+123+1)
具有n個結點的不同二叉樹有多少樹形?
與用棧得出的從1到n的數字有多少不同的排列具有相同的結論:c(2n,n)/(n+1) (c(2n,n)表示2n裡取n)
設n個數出棧方式數量為f(n)
因為入棧的順序是確定的,下標記為1,2,3,...n
設最後乙個出棧的是第k個數,則說明k之前的k-1個數先完成進棧出棧,有f(k-1)種方式;
然後k之後的n-k個數再完成進棧出棧,有f(n-k)種方式;最後第k個數出棧。
這時就有f(k-1)*f(n-k)種方式
而每乙個數都有可能是最後出棧的
所以有f(n)=f(0)*f(n-1)+f(1)*f(n-2)+...+f(k-1)*f(n-k)+...+f(n-1)*f(0)
上面f(0)=1是為了寫成統一式:f(n)=f(k-1)*f(n-k)
由上式的通項就是卡特蘭數f(n)=c(2n,n)/(n+1)
五花八門的Barcamp和五花八門的人
像barcamp這樣的活動很有意思,據說這個活動是從國外引入的,就是一群可能誰也不認識的人,在某個固定的時間 固定的地點聚在一起,自願寫下自己分享的話題,在討論之後,開始分組討論,上面演講,底下提問,其樂融融。在北京的時候,自己作為乙個看客參加,沒有太多感觸,而在上海作為乙個speaker參加,感觸...
五花八門的Barcamp和五花八門的人
像barcamp這樣的活動很有意思,據說這個活動是從國外引入的,就是一群可能誰也不認識的人,在某個固定的時間 固定的地點聚在一起,自願寫下自己分享的話題,在討論之後,開始分組討論,上面演講,底下提問,其樂融融。在北京的時候,自己作為乙個看客參加,沒有太多感觸,而在上海作為乙個speaker參加,感觸...
五花八門實現元素居中
這篇文章很早就想寫了,一直拖到現在,終於動手了,哈哈 行內元素 在其父元素上設定 text align center 單個塊級元素 設定width以及margin 0 auto 多個塊級元素實現水平居中 1 為這些塊級元素設定display inline block屬性,其父元素設定 text al...