16 树

16 树

# encoding: utf-8

class Node(object):
	def __init__(self, item):
		self.item = item
		self.lchild = None
		self.rchild = None


class Tree(object):
	def __init__(self):
		self.root = None

	def add(self, item):
		node = Node(item)

		# 根为空
		if self.root is None:
			self.root = node
			return

		# 根不为空
		queue = [self.root]

		while queue:
			# 队首元素出队
			cur_node = queue.pop(0)

			if cur_node.lchild is None:
				cur_node.lchild = node
				return
			else:
				# 当前节点的左孩子节点入队
				queue.append(cur_node.lchild)

			if cur_node.rchild is None:
				cur_node.rchild = node
				return
			else:
				# 当前节点的右孩子节点入队
				queue.append(cur_node.rchild)


	def breadth_travel(self):
		"""广度优先遍历(层次遍历)"""

		if self.root is None:
			return 

		queue = [self.root]

		while queue:
			cur_node = queue.pop(0)
			print(cur_node.item, end=" ")

			if cur_node.lchild is not None:
				queue.append(cur_node.lchild)
			if cur_node.rchild is not None:
				queue.append(cur_node.rchild)


	def pre_order(self, root):
		"""先序遍历: 根 左 右"""

		if root is None:
			return

		print(root.item, end=" ")
		self.pre_order(root.lchild)
		self.pre_order(root.rchild)


	def in_order(self, root):
		"""中序遍历: 左 根 右"""

		if root is None:
			return

		self.in_order(root.lchild)
		print(root.item, end=" ")
		self.in_order(root.rchild)

	
	def post_order(self, root):
		"""后序遍历: 左 右 根"""

		if root is None:
			return

		self.post_order(root.lchild)
		self.post_order(root.rchild)
		print(root.item, end=" ")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值