解题思路:记录节点位置,节点层次,进而计算每层宽度,找出最大值即可。
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def widthOfBinaryTree(self, root):
"""
:type root: TreeNode
:rtype: int
"""
if root is None:
return 0
nodes = []
queue = [[root,1,1]]
depth_now = 0
tmp = []
while queue != []:
node,idx,depth = queue.pop(0)
if depth != depth_now:
depth_now = depth
if tmp != []:
nodes.append(tmp)
tmp = []
if node is None:
continue
else:
tmp.append(idx)
queue.append([node.left,idx*2,depth+1])
queue.append([node.right,idx*2+1,depth+1])
maxn = 0
for n in nodes:
maxn = max(maxn,n[-1]-n[0]+1)
return maxn