题解 | #二叉树的中序遍历#
二叉树的中序遍历
http://www.nowcoder.com/practice/0bf071c135e64ee2a027783b80bf781d
思路
- 中序肯定是要使用迭代法啦;推荐看看“代码随想录”,确实很适合入门学习
- 使用统一格式迭代法,中序会好写很多
- 关键在于将遍历与操作的流程分割
- 同时也适合遍历过程中执行各种操作的问题
- 需要注意,由于使用 stack,所以代码顺序需要修改:“左中右” -> “右左中”,如果是
deque 和 popleft
,那就同样代码顺序即可
代码
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param root TreeNode类
# @return int整型一维数组
#
class Solution:
def inorderTraversal(self , root: TreeNode) -> List[int]:
# write code here
if not root: return []
stack = [root]
res = []
while stack != []:
cur = stack.pop()
if cur != None:
if cur.right: stack.append(cur.right)
stack.append(cur)
stack.append(None)
if cur.left: stack.append(cur.left)
else:
cur = stack.pop()
res.append(cur.val)
return res