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

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



import queue

class Node:
	def __init__(self,value=None,left=None,right=None):
		self.value=value
		self.left=left
		self.right=right

def treeDepth(tree):
	if tree==None:
		return 0
	leftDepth=treeDepth(tree.left)
	rightDepth=treeDepth(tree.right)
	if leftDepth>rightDepth:
		return leftDepth+1
	if rightDepth>=leftDepth:
		return rightDepth+1

def treeWidth(tree):
	curwidth=1
	maxwidth=0
	q=queue.Queue()
	q.put(tree)
	while not q.empty():
		n=curwidth
		for i in range(n):
			tmp=q.get()
			curwidth-=1
			if tmp.left:
				q.put(tmp.left)
				curwidth+=1
			if tmp.right:
				q.put(tmp.right)
				curwidth+=1
		if curwidth>maxwidth:
			maxwidth=curwidth
	return maxwidth

if __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: 4
width: 3

轉載請註明:轉自http://blog.csdn.net/littlethunder/article/details/23736491

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章