小螞蟻學習數據結構(10)——樹的基本介紹

樹定義spa

    專業定義.net

    1,有且只有一個稱爲根的節點指針

    2,有若干個互不相交的子樹,這些子樹自己也是一棵樹blog

   通俗定義內存

    1,樹是有節點和邊組成ci

    2,每一個節點只有一個父節點,但能夠有多個直接點get

    3,但有一個節點例外,該節點沒有父節點,此節點稱爲根節點博客

    專業術語it

        節點    父節點    子節點二叉樹

        子孫    堂兄弟

        深度:

            從根節點到最底層節點的層數稱之爲深度

            根節點是第一層

        葉子節點:    

            沒有子節點的節點

        非終端節點

            實際就是非葉子節點

        度

            子節點的個數稱爲度


樹的分類

    通常樹

    二叉樹

    森林


通常樹:任意一個節點的子節點的個數都不受限制

二叉樹:

    任意一個節點的子節點個數最多兩個,且子節點的位置不可更改

    分類:

        通常二叉樹

        滿二叉樹:

            在不增長樹的層數的前提下,沒法再多添加一個節點的二叉樹就是二叉樹

        徹底二叉樹

            若是隻是刪除滿二叉樹最底層最右邊的連續若干個節點,這樣造成的二叉樹就是徹底二叉樹

森林:n個互不相交的樹的集合


樹的存儲

    二叉樹的存儲

        連續存儲【徹底二叉樹】

            書上 性質4——性質5

                優勢:

                    查找某個節點的父節點和子節點(也包括有沒有子節點)速度很快

                缺點:

                    耗用內存空間過大

        鏈式存儲

            比較簡單,耗費內存也少,隨機分佈,依靠指針域進行連接


    通常樹的存儲

        雙親表示法(求父節點方便)

            將元素的父節點的下標保存

        孩子表示法(求子節點方便)

            保存子節點的指針域

        雙親孩子表示法(求父節點,求子節點都很方便)

            1,保存父節點下標

            2,保存子節點指針    

        二叉樹表示法

            把一個普通樹轉化成二叉樹來存儲,

            具體轉換方法:

                設法保證任意一個節點的左指針域指向他的第一個孩子,右指針域指向他的兄弟

                只要能知足此條件,就能夠將一個普通樹轉化成二叉樹

                一個普通樹轉化成的二叉樹,必定沒有右子樹。當看到一個二叉樹的時候,不必定就真的是一課二叉樹,有多是普通書轉化而來。

    森林的存儲

        森林的存儲和通常樹轉化二叉樹方法是同樣的。先把森林轉化爲二叉樹,在存儲二叉樹


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

相關文章
相關標籤/搜索