中序遍历
中序遍历有三种写法,递归、迭代和merris
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
tree = TreeNode(1)
tree.left = TreeNode(2)
tree.right = TreeNode(3)
tree.left.left = TreeNode(4)
tree.left.right = TreeNode(5)
tree.right.left = TreeNode(6)
递归
# 递归
def m1(root):
ans = []
def cur(root):
if root is not None:
cur(root.left)
ans.append(root.val)
cur(root.right)
else:
return
if root is None:
return ans
else:
cur(root)
return ans
迭代
# 迭代
def m2(root):
stack = []
ans = []
while stack or root:
if root:
stack.append(root)
root = root.left
else:
tmp = stack.pop()
ans.append(tmp.val)
root = tmp.right
return ans
merris