题目地址
https://leetcode-cn.com/problems/binary-tree-level-order-traversal-ii/
题目描述
代码初步
- 思路:循环迭代
# 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 levelOrderBottom(self, root):
"""
:type root: TreeNode
:rtype: List[List[int]]
"""
result = []
if not root: # 当为root空时
return []
ls = []
ls.append(root)
while ls:
result_temp = []
for item in ls:
result_temp.append(item.val)
ls_left_right = ls
ls=[]
for item in ls_left_right:
if item.left:
ls.append(item.left)
if item.right:
ls.append(item.right)
result.append(result_temp)
return list(reversed(result))
代码欣赏
- 方法1:循环迭代
这个代码更精简
# 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 levelOrderBottom(self, root):
"""
:type root: TreeNode
:rtype: List[List[int]]
"""
stack = [root]
res = []
if not root:
return []
while len(stack) != 0:
tmp = []
res_each = []
for i in stack:
res_each.append(i.val)
if i.left != None:
tmp.append(i.left)
if i.right != None:
tmp.append(i.right)
stack = tmp
res.insert(0,res_each) # 从列表第一个位置插入元素
return res