【Python排序搜尋基本演算法】之二叉樹的深度和寬度

來源:互聯網
上載者:User

        接著上一個二叉樹的主題,用python寫一下求二叉樹深度和寬度的代碼,求深度用遞迴;求寬度用隊列,然後把每層的寬度求出來,找出最大的就是二叉樹的寬度,如下:



import queueclass Node:def __init__(self,value=None,left=None,right=None):self.value=valueself.left=leftself.right=rightdef treeDepth(tree):if tree==None:return 0leftDepth=treeDepth(tree.left)rightDepth=treeDepth(tree.right)if leftDepth>rightDepth:return leftDepth+1if rightDepth>=leftDepth:return rightDepth+1def treeWidth(tree):curwidth=1maxwidth=0q=queue.Queue()q.put(tree)while not q.empty():n=curwidthfor i in range(n):tmp=q.get()curwidth-=1if tmp.left:q.put(tmp.left)curwidth+=1if tmp.right:q.put(tmp.right)curwidth+=1if curwidth>maxwidth:maxwidth=curwidthreturn maxwidthif __name__=='__main__':root=Node('D',Node('B',Node('A'),Node('C')),Node('E',right=Node('G',Node('F'))))depth=treeDepth(root)width=treeWidth(root)print('depth:',depth)print('width:',width)

        輸出為:

depth: 4width: 3

轉載請註明:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.