1. 程式人生 > >python數據結構與算法(19)

python數據結構與算法(19)

root 通過 right python ges nod log roc 編號

?叉樹
?叉樹的基本概念
?叉樹是每個節點最多有兩個?樹的樹結構。通常?樹被稱作“左?樹”(left subtree)和“右?樹”(right subtree)
?叉樹的性質(特性)
性質1: 在?叉樹的第i層上?多有2^(i-1)個結點(i>0) 性質2: 深度為k的?叉樹?多有2^k - 1個結點(k>0) 性質3: 對於任意?棵?叉樹,如果其葉結點數為N0,?度數為2的結點總數 為N2,則N0=N2+1; 性質4:具有n個結點的完全?叉樹的深度必為 log2(n+1) 性質5:對完全?叉樹,若從上?下、從左?右編號,則編號為i 的結點,其左 孩?編號必為2i,其右孩?編號必為2i+1;其雙親的編號必為i/2(i=1 時為 根,除外)
(1)完全?叉樹——若設?叉樹的?度為h,除第 h 層外,其它各層 (1~ h-1) 的結點數都達到最?個數,第h層有葉?結點,並且葉?結點都是 從左到右依次排布,這就是完全?叉樹。
技術分享圖片
(2)滿?叉樹——除了葉結點外每?個結點都有左右?葉且葉?結點都處在最 底層的?叉樹。
技術分享圖片
?叉樹的節點表示以及樹的創建
通過使?Node類中定義三個屬性,分別為elem本身的值,還有lchild左孩? 和rchild右孩?

class   Node(object):               """節點類"""               def __init__(self,  elem=-1,    lchild=None,    rchild=None):                               self.elem   =   elem                                self.lchild =   lchild                              self.rchild =   rchild

樹的創建,創建?個樹的類,並給?個root根節點,?開始為空,隨後添加節 點

class   Tree(object):               """樹類"""                def __init__(self,  root=None):                             self.root   =   root
                def add(self,   elem):                              """為樹添加節點"""          

python數據結構與算法(19)