二叉樹的寬度就是二叉樹寬度最大的層的寬度
def widthofbinarytree(self,root):
self.ans = 0
dic = {}
def dfs(node,pos=0,depth=0):
if node:
dic.setdefault(depth,pos)
self.ans = max(self.ans,pos-dic[depth]+1)
dfs(node.left,depth+1,pos*2)
dfs(ndoe.right,depth+1,pos*2+1)
dfs(root)
return self.ans
def widthofbinarytree(root):
width = 0
level = [(1,root)]#根結點序號為1
while level:當前層不為空
width = max(width,level[-1][0]-level[0][0]+1)#當前層的寬度
level = [k
for num,node in level
for k in enumerate((node.left,node.right),2*num) if k[1]]#列表重置為當前層每個節點的非空左右節點,左節點序號為2*num,右節點序號為2*num+1
return width
二叉樹最大寬度
題目描述 給定乙個二叉樹,編寫乙個函式來獲取這個樹的最大寬度。樹的寬度是所有層中的最大寬度。這個二叉樹與滿二叉樹 full binary tree 結構相同,但一些節點為空。每一層的寬度被定義為兩個端點 該層最左和最右的非空節點,兩端點間的null節點也計入長度 之間的長度。方法一 definiti...
二叉樹最大寬度
二叉樹的寬度 即具有結點數最多的那一層的結點數 思路 在二叉樹的層次遍歷演算法的基礎上修改 include include include using namespace std typedef char elemtype typedef struct bitnode bitree 建立二叉樹 vo...
求二叉樹寬度
題目 乙個二叉樹採用二叉鍊錶儲存,設計乙個函式計算這個二叉樹的寬度 解題思路 採用層次遍歷,將每乙個結點的資訊儲存在陣列中,結點的資訊包括這個結點的層數,以及結點的左右子樹,資料型別 為char型字元 然後對這個陣列進行遍歷,層號數目最多的即為該二叉樹最大寬度處的層號,然後計算這個層號的數目,即為最...