就是二叉树的中序遍历,这道题感觉主要是先要考迭代的方法,毕竟递归的方法在有些人看来有些简单。
可先看看递归把
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def inorderTraversal(self, root: TreeNode) -> List[int]:
res = []
def helper(root):
if not root:
return
helper(root.left)
res.append(root.val)
helper(root.right)
helper(root)
return res
左--中--右
迭代的方法
class Solution:
def inorderTraversal(self, root: TreeNode) -> List[int]:
r, stack = [], []
while True:
while root:
stack.append(root)
root = root.left
if not stack:
return r
node = stack.pop()
r.append(node.val)
root = node.right
return r
这里面一开始不明白二叉树是怎么放入到list中的,原来是把root这个节点放入到list中,最大一个的误区是root是一个节点,根节点能代表一整棵树但是并不是说把一整棵树放入到list中,放入的节点,节点。list列表采用栈的方式来用append和pop实现栈的后进先出。