二叉树层次遍历算法 python_二叉树的遍历详解:前、中、后、层次遍历(Python实现)...

二叉树的遍历详解:前、中、后、层次遍历(Python实现)

二叉树是一种常见的数据结构,而它的常见遍历方法有前序遍历、中序遍历、后续遍历、层次遍历——掌握这几种遍历方法是很有必要的。

假设我们二叉树节点的定义如下——

# Definition for a binary tree node.

class TreeNode:

def __init__(self, x):

self.val = x

self.left = None

self.right = None

前序遍历

1. 深度优先遍历(递归实现)

我们先看前序遍历二叉树的过程——

访问根结点

前序遍历左子树

前序遍历右子树

很容易就可以看出这个过程是递归的,所以可以很方便使用递归实现前序遍历。

def preorderTraversal(root: TreeNode) -> List[int]:

res = []

dfs(root, res)

return res

def dfs(root: TreeNode, res: List[int]) -> None:

if not root: return

res.append(root.val)

dfs(root.left, res)

dfs(root.right, res)

python 特色的二叉树前序遍历递归实现

def preorderTraversal(root: TreeNode) -> List[int]:

if not root: return []

return [root.val] + preorderTraversal(root.left) + preorderTraversal(root.right)

2.深度优先遍历(迭代实现)

由于递归是隐式的使用了栈(函数栈),所以也可以直接使用栈来实现递归。

def preorderTraversal(root: TreeNode) -> List[int]:

if root is None: return []

res, stack = [], [root]

while stack:

node = stack.pop()

if not node: continue

res.append(node.val)

if node.right:

stack.append(node.right)

if node.left:

stack.append(node.left)

return res

3.(颜色)标记法

核心思想如下:

使用标记记录节点的状态,

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值