Python 深度优先和广度优先

2019-02-24  本文已影响0人  马本不想再等了

1. 网站的url是一个树形图

主干:www.jianshu.con
主分支:www.jianshu.com/subscriptions/
子分支:www.jianshu.com/notifications
叶子:https://www.jianshu.com/notifications#/comments
......

理解深度优先与广度优先.png

2. 深度优先算法和实现

深度优先算法用递归实现

def depth_tree(tree_node):
    """使用递归来实现树的深度优先的遍历"""
    if tree_node is not None:
        print(tree_node._data)
        if tree_node._left is not None:
            return depth_tree(tree_node._left)
        if tree_node._right is not None:
            return depth_tree(tree_node._right)

3. 广度优先算法和实现

广度优先算法用队列实现

def level_queue(root):
    """使用队列来实现树的广度优先的遍历"""
    if root is None:
        return
    my_queue = []
    node = root
    my_queue.append(node)
    while my_queue:
        node = my_queue.pop(0)
        print(node.elem)
        if node.lchild is not None:
            my_queue.append(node.lchild)
        if node.rchild is not None:
            my_queue.append(node.rchild)
上一篇 下一篇

猜你喜欢

热点阅读