这里主要是用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:
         returndeep_first(l)