Python3学习笔记(四):用Python实现深度优先

这里主要是用Python实现下深度优先的概念,由于代码写得比较随意,就没有封装成类,而是写成一个函数

用一个列表做为实验数据,模拟成二叉树结构,用递归的方式不断获取二叉树上的左节点,一直到左节点

序号超出列表范围,然后回归获取右节点,以此来实现深度优先。

以下是代码,代码以实现基本概念功能为主,比较简陋,但是易于理解和记忆:

#****************************************************************#
#深度优先函数
#左节点的规律:父节点的两倍  tree_left = i*2
#右节点的规律:父节点的两倍+1  tree_right = i*2 + 1
#设主节点,也就是l[0]为第一个节点,则第一个左节点就是2号节点,以此类推
#用 <= len(l)来控制节点没有超出列表
#递归调用,一直到左节点超出列表长度,,此时表明左节点不存在,开始回归打印右节点
#****************************************************************#
# l = [1,2,9,3,6,10,13,4,5,7,8,11,12,14]
# l = [1, 2, 3, 4, 5, 6, 7, 8]
l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]

def deep_first(l,i=1):
    if i == 1:
        print(l[0])
    tree_left = i*2
    tree_right = i*2 + 1
    if tree_left <= len(l):
        print(l[tree_left-1])
        deep_first(l,tree_left)
    if tree_right <= len(l):
        print(l[tree_right-1])
        deep_first(l,tree_right)
    else:
        return

deep_first(l)

猜你喜欢

转载自blog.csdn.net/qq_36272641/article/details/82951320
今日推荐