难度:中等
题目描述:
思路分析:不多说了,相看的看这个吧【图解数据结构】一组动画彻底理解二叉树三种遍历
题解一:(递归)
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def __init__(self):
self.res = []
def inorderTraversal(self, root: TreeNode) -> List[int]:
if root == None:return []
if root.left != None:
self.inorderTraversal(root.left)
self.res.append(root.val)
if root.right != None:
self.inorderTraversal(root.right)
return self.res
题解一结果:
题解二:(迭代)
# 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]:
#迭代算法,使用栈
if root == None:return []
res = []
stack =[]
cur = root
while cur != None or stack != []:
while cur != None:
stack.append(cur)
cur = cur.left
cur = stack.pop()
res.append(cur.val)
cur = cur.right
return res
题解二结果: