迭代法:
# 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 levelOrder(self, root):
"""
:type root: TreeNode
:rtype: List[List[int]]
"""
res = list()
if not root:
return res
stack = list()
stack.append(root)
level = 0
while stack:
res.append([])
count = len(stack)
for i in range(count):
tmp = stack.pop(0)
res[level].append(tmp.val)
if tmp.left:
stack.append(tmp.left)
if tmp.right:
stack.append(tmp.right)
level += 1
return res
递归法:
# 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 levelOrder(self, root):
"""
:type root: TreeNode
:rtype: List[List[int]]
"""
res = list()
if not root:
return res
level = 0
def helper(root,level):
if len(res) == level: #这行代码是精髓,判断每一层的开始,细细品味
res.append([])
res[level].append(root.val)
if root.left:
helper(root.left,level+1)
if root.right:
helper(root.right,level+1)
helper(root,0)
return res
来源:CSDN
作者:宋建国
链接:https://blog.csdn.net/hot7732788/article/details/104518628