自上而下,从左往右依次遍历
先序遍历:先访问根结点、再先序遍历左子树、再先序遍历右子树
中序遍历:先中序遍历左子树、再访问根结点、再中序遍历右子树
后序遍历:先后序遍历左子树、再后序遍历右子树、最后访问根结点

层次遍历:A 、B、C、D、E、F、G
先序遍历:A、B、D、E、C、F、G
中序遍历:D、B、E、A、F、C、G
后序遍历:D、E、B、A、F、G、C
class TreeNode():
def __init__(self,value=None,left=None,right=None):
self.value = value
self.left = left
self.right = right
def levelorder(root):
if root is None:
return None
#模拟队列
q = []
#先将根结点入队列
q.append(root)
#列表为空时,循环终止
while len(q) != 0:
for i in range(len(q)):
#将列表中第一个节点出队
r = q.pop(0)
#每一次节点出队都将其左孩子和右孩子入队
if r.left is not None:
#左孩子入队
q.append(r.left)
if r.right is not None:
#右孩子入队
q.append(r.right)
print(r.value)
# 前序遍历 def preTraverse(root): if root is None: return print(root.value) preTraverse(root.left) preTraverse(root.right) #中序遍历 def midTravrse(root): if root is None: return midTravrse(root.left) print(root.value) midTravrse(root.right) #后续遍历 def afterTraverse(root): if root is None: return afterTraverse(root.left) afterTraverse(root.right) print(root.value)
非递归实现方法有时间补上
原文:https://www.cnblogs.com/jiangfan95/p/12431207.html