小螞蟻學習數據結構(17)——樹、二叉樹性質、儲存方式

數據結構

    是一類非線性數據結構,是以分支關係定義的層次結構。spa

特色:.net

    至少有一個節點——根,只有根的樹成爲最小樹指針

    樹中各子樹是互不相交的集合blog

術語(略)ci

二叉樹get

    特色:博客

        每一個節點最多有二顆子樹it

        子樹有左右之分,並且不能任意顛倒二叉樹

    性質

        1,在二叉樹的第i層至多有2^(i-1)個節點(i >=1)

        2,深度爲k的二叉樹至多有2^k - 1個節點(k>=1)

        3,對任何一顆二叉樹T,若是其終端節點數爲n0,度爲2的節點數爲n2,則n0 = n2 + 1(書上有一段神奇的推導過程)

        滿二叉樹:

            看着整個輪廓是個完整的三角形的樹就是滿二叉樹。(本身定義的)

        徹底二叉樹:

            除了最後一行,上面是個滿二叉樹,最後一行依次排列。(也是本身定義的)

        4,具備n個節點的徹底二叉樹的深度爲 以2爲底n的對數 + 1

        5,若是對一顆有n個節點的徹底二叉樹的節點按層序編號,則對任一節點i(1 <= i <= n),有:

            1)若是i=1,節點i就是二叉樹的根,沒有父節點;若是i>1,則其雙親是 i/2,向下取整。

            2)若是2i>n,這節點i無左孩子。若是2i<=n,則其左孩子就是2i

            3)若是2i+1>n,這節點i無右孩子。若是2i+1<=n,則其右孩子就是2i+1

二叉樹的存儲結構

    順序存儲結構

        特色:

            節點間關係蘊含在其存儲位置中。

            浪費空間,適於存儲滿二叉樹和徹底二叉樹。

            不多用這種順序存儲結構,1,浪費空間,2,插入刪除很費勁兒,時間複雜度高。

    鏈式存儲結構

        二叉鏈表 : 左孩子指針、右孩子指針、數據域

        三叉鏈表 : 比上面多了一個 父節點指針

    總結:

        在二叉鏈表中,查找節點都要從根節點開始進行查找,查找的時間複雜度是節點的個數。而在三叉鏈表中查找節點實現就比較容易些,由於針對每一個節點均可以進行上行查找或者下行查找。


學PHP的小螞蟻 博客 http://my.oschina.net/woshixiaomayi/blog

相關文章
相關標籤/搜索