二叉树的遍历(前中后序和广度优先遍历)

这篇博客详细介绍了二叉树的遍历,包括深度优先的前序、中序和后序遍历,以及广度优先遍历。通过Python代码示例,帮助读者理解和区分这两种不同的遍历方式。深度优先遍历以最左路径开始,而广度优先遍历利用队列实现层序遍历。
摘要由CSDN通过智能技术生成

二叉树的遍历python版(前中后序和广度优先遍历)


(最近学习人工智能的课程里老师有提到二叉树深度和广度优先搜索相关的内容,发觉自己还是容易混淆,因此整理此篇巩固记忆,希望对你也有所帮助)


深度优先和广度优先的最主要区别就是存储结点的方式不同。深度优先是从最左树的结点依次存储,即返回的结果是从根节点到最左子树的叶子结点的路径开始的,之后才不断增加其他结点(父节点/右结点/右子树)。

而广度优先搜索是每一层必须输出后再进行下一层的输出,这就需要借助队列先入先出的规则存储结点,将结点的左、右子节点依次存到队列再从头取出,实现按层序遍历的目的。

深度优先遍历——也叫前序遍历,从最左侧路径开始返回结果

class TreeNode(): #首先创建一颗二叉树 
  def __init__(self, value):
    self.value = value
    self.left = None #左树
    self.right = None #右树
    
class Solution():
	def DFS(self, root): #深度优先遍历
  	if root is None:
  		return []
    stack = [root] #使用栈存储结点,先入后出
    result = [] #用来存放最终返回输出的结点列表
    while stack:
      cur_node = stack.pop()
      result.append(cur_node.val)
      if cur_node
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值