python实现二叉树的层序、前序、中序、后序、之字形遍历

python实现二叉树的层序、前序、中序、后序遍历

1.示例

    二叉树: [3,9,20,null,null,15,7],
    3
   / \
  9  20
    /  \
   15   7

—————————————————————————
树的遍历方式总体分为两类:深度优先搜索(DFS)、广度优先搜索(BFS):
常见的 DFS : 先序遍历、中序遍历、后序遍历(递归法);
常见的 BFS : 层序遍历(即按层遍历,迭代法)。

2.层序遍历

要求:从上到下打印二叉树,同层节点按照从左往右的顺序打印,即树的广度优先搜索(BFS)。
思路:运用队列结构的思想,将同一层的节点加到队列中,每次在结果集中追加同一层节点的val。

这个版本是leetcode精选题解。使用 collections 中的双端队列 deque() ,其 popleft() 方法可达到 O(1) 时间复杂度;列表 list 的 pop(0) 方法时间复杂度为 O(N),弹出队列的首元素。
(队列特点:先进先出)

双端队列:queue = collections.deque()
		 head_node = queue.popleft()
# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
class Solution(object):
    def levelOrder(self, root):
        """
        :type root: TreeNode
        :rtype: List[int]
        """
        if not root: 
            return []
        res, queue = [], collections.deque()
        queue.append(root)
        while queue:
            node = queue.popleft()
            res.append(node.val)
            if node.left: queue.append(node.left)
            if node.right: queue.append(node.right)
        return res

这个版本是小鸟版,使用pop()方法来弹出队列元素。

pop()方法:参见  目录8:相关知识
# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution(object):
    def levelOrder(self, root):
        """
        :type root: TreeNode
        :rtype: List[int]
        """
        # 利用队列,层次遍历二叉树,打印
        que 
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值