美文网首页
二叉树的深度优先搜索与宽度优先搜索

二叉树的深度优先搜索与宽度优先搜索

作者: 美雨知春 | 来源:发表于2020-09-24 18:18 被阅读0次

    二叉树遍历方式分为深度优先搜索和宽度优先搜索

    1. 下面先写一个先根序访问,也就是深度优先搜索
    def preorder(t, proc)
        if t is None:
            return
        proc(t.data)
        preorder(t.left)
        preorder(t.right)
    

    很简单,递归调用,先处理根数据再处理左子树,右子树。中根序和后根序与此类似,调换一下数据处理顺序就可以了

    1. 宽度优先搜索需要一个队列,是水平访问,要每一层访问完了再访问下一层,下面是实现:
    from SQueue import *
    def levelorder(t,proc):
        qu = SQueue()
        qu.enqueue(t)
        while not qu.is_empty():
            n = qu.dequeue()
            if t is None:
                continue
            qu.enqueue(t.left)
            qu.enqueue(t.right)
            proc(t.data)
    

    后面还要分析非递归的遍历,分析算法复杂度

    相关文章

      网友评论

          本文标题:二叉树的深度优先搜索与宽度优先搜索

          本文链接:https://www.haomeiwen.com/subject/ikrtuktx.html