樹定義spa
專業定義.net
1,有且只有一個稱爲根的節點指針
2,有若干個互不相交的子樹,這些子樹自己也是一棵樹blog
通俗定義內存
1,樹是有節點和邊組成ci
2,每一個節點只有一個父節點,但能夠有多個直接點get
3,但有一個節點例外,該節點沒有父節點,此節點稱爲根節點博客
專業術語it
節點 父節點 子節點二叉樹
子孫 堂兄弟
深度:
從根節點到最底層節點的層數稱之爲深度
根節點是第一層
葉子節點:
沒有子節點的節點
非終端節點
實際就是非葉子節點
度
子節點的個數稱爲度
樹的分類
通常樹
二叉樹
森林
通常樹:任意一個節點的子節點的個數都不受限制
二叉樹:
任意一個節點的子節點個數最多兩個,且子節點的位置不可更改
分類:
通常二叉樹
滿二叉樹:
在不增長樹的層數的前提下,沒法再多添加一個節點的二叉樹就是二叉樹
徹底二叉樹
若是隻是刪除滿二叉樹最底層最右邊的連續若干個節點,這樣造成的二叉樹就是徹底二叉樹
森林:n個互不相交的樹的集合
樹的存儲
二叉樹的存儲
連續存儲【徹底二叉樹】
書上 性質4——性質5
優勢:
查找某個節點的父節點和子節點(也包括有沒有子節點)速度很快
缺點:
耗用內存空間過大
鏈式存儲
比較簡單,耗費內存也少,隨機分佈,依靠指針域進行連接
通常樹的存儲
雙親表示法(求父節點方便)
將元素的父節點的下標保存
孩子表示法(求子節點方便)
保存子節點的指針域
雙親孩子表示法(求父節點,求子節點都很方便)
1,保存父節點下標
2,保存子節點指針
二叉樹表示法
把一個普通樹轉化成二叉樹來存儲,
具體轉換方法:
設法保證任意一個節點的左指針域指向他的第一個孩子,右指針域指向他的兄弟
只要能知足此條件,就能夠將一個普通樹轉化成二叉樹
一個普通樹轉化成的二叉樹,必定沒有右子樹。當看到一個二叉樹的時候,不必定就真的是一課二叉樹,有多是普通書轉化而來。
森林的存儲
森林的存儲和通常樹轉化二叉樹方法是同樣的。先把森林轉化爲二叉樹,在存儲二叉樹
學PHP的小螞蟻 博客 http://my.oschina.net/woshixiaomayi/blog