# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
#左根右
class Solution(object):
def inorderTraversal(self, root):
if root == None:
return
else:
self.inorderTraversal(root.left)# 错误版本写为在if not self.left == None下执行本行代码,在遍历到每个节点时,每个节点可能有左子树,可能有右子树,可能是叶子节点,这样写没有任何根据,当时没有理解到二叉树遍历遍历到None值逻辑最简单,因为不管当前遍历到节点是何种类型(可能有左子树,可能有右子树,可能是叶子节点)都可以遍历到None值作为递归结束条件
print(root.val)
self.inorderTraversal(root.right)# 错误版本写为在if not self.right == None下执行本行代码...
leetcode中有时会要求返回一个数组,可使用嵌套函数
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
#左根右
class Solution(object):
arr = []
def inorderTraversal(self, root):
"""
:type root: TreeNode
:rtype: List[int]
"""
def inorder_helper(node, arr):
if node is not None:
# 递归遍历左子树
inorder_helper(node.left, arr)
# 将当前节点的值添加到结果列表
arr.append(node.val)
# 递归遍历右子树
inorder_helper(node.right, arr)
# 初始化用于存储遍历结果的列表
result = []
# 开始递归遍历
inorder_helper(root, result)
return result