【数据结构与算法】二叉树遍历

两种遍历方式

广度优先遍历和深度优先遍历,都可用递归和非递归实现

定义二叉树
class Node:
	def __init__(self, root):
		self.root = root
		self.left = None
		self.right = None
递归
# depth-first-traversal

# pre-order
def pre_order(tree):
	print(tree.root)
	pre_order(tree.left)
	pre_order(tree.right)
# mid-order
def mid-order(tree):
	mid-order(tree.left)
	print(tree.root)
	mid-order(tree.right)
# post-order
def post_order(tree):
	post_order(tree.left)
	post_order(tree.right)
	print(tree.root)

# breadth-first-traversal


非递归
# depth-first-traversal

# pre-order
def pre_order(tree):
	stack = [tree]
	while stack:
		print(tree.val)
		if tree.right:
			stack.append(tree.right)
		if tree.left:
			stack.append(tree.left)
		tree = stack.pop() 
# mid-order

# post-order

# breadth-first-traversal
def bft(tree):
	stack = [tree]
	while stack:
		t = stack.pop()
		if isinstance(t, Node):
			if t.right:
				stack.append(t.right)
			if t.left:
				stack.append(t.left)
			stack.append(t.val)
		else:
			print(t)

leetcode原题:leetcode 层次遍历

ref

ref1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值