前序遍历
方法:递归
1、遍历根节点
2、前序遍历左子树
3、前序遍历右子数
def preorder(node1):
list1 = []
def recurse(node2):
if node2:
list1.append(node2.data)
recurse(node2.left)
recurse(node2.right)
recurse(node1)
return list1
性能更优的方法,使用生成器函数
def preorder(node1):
stack1 = stack() # 假设我们已经实现了栈,这里创建一个新的栈对象
if node1:
stack1.push(node1)
else:
return None
while stack1:
item = stack1.pop()
if item:
yield item.data
stack1.push(item.right) # 右子节点压入栈
stack2.push(item.left) # 左子节点压入栈
中序遍历
方法:递归
1、中序遍历左子树
2、遍历根节点
3、中序遍历右子数
def inorder(node1):
list1 = []
def recurse(node2):
if node2:
recurse(node2.left)
list1.append(node2.data)
recurse(node2.right)
recurse(node1)
return list1
后序遍历
方法:递归
1、后序遍历左子树
2、后序遍历右子数
3、遍历根节点
def inorder(node1):
list