python实现二叉树,以及二叉树的遍历

Myth丶恋晨 2022-06-11 04:52 262阅读 0赞

二叉树Python实现

此二叉树我们用列表来表示它的节点

例如:

a[2,None,None],它表示的是根节点为2,没有子节点,a[0]为根节点,a[1]为左子节点,a[2]为右子节点。

数据结构介绍完,然后进行构造二叉树

  1. #build binary tree function
  2. #二叉树实现
  3. #构建二叉树
  4. def Bintree(data,left=None,right=None):
  5. return [data,left,right]
  6. #判断二叉树是否为空树,返回的是一个布尔值
  7. def is_empty_Bintree(btree):
  8. return btree is None
  9. #返回树的根
  10. def root(btree):
  11. return btree[0]
  12. def left(btree):
  13. return btree[1]
  14. def right(btree):
  15. return btree[2]
  16. #插入一个根节点
  17. def set_root(btree,data):
  18. btree[0] =data
  19. def set_left(btree,left):
  20. btree[1]=left
  21. def set_right(btree,right):
  22. btree[2]=right

构造树的函数已经完成,下面是树的构造

t=Bintree(2, Bintree(4), Bintree(8))

print(t)

输出结果为:

[2, [4, None, None], [8, None, None]]

此二叉树为:

Center

下面构造一棵复杂的二叉树:

set_left(left(t),Bintree(5))
set_right(left(t),Bintree(6))
set_left(left(left(t)),Bintree(9))
print(t)

输出为:

[2, [4, [5, [9, None, None], None], [6, None, None]], [8, None, None]]

此树为:

Center 1

接下来进行二叉树的遍历

(下面用的递归实现的二叉树遍历)

1、先序遍历(先根节点,再左节点,后右节点)

代码实现:

  1. def Through(tree):
  2. if((is_empty_Bintree(tree))==False):
  3. a=root(tree)
  4. if a==None:pass
  5. else:
  6. print(a)
  7. Through(left(tree))
  8. Through(right(tree))
  9. return None # Through(right(tree))
  10. Through(t)

遍历的顺序为:

245968

2、中序遍历(先左节点,再根节点,后右节点)

#中序遍历

  1. def Through(tree):
  2. if((is_empty_Bintree(tree))==False):
  3. Through(left(tree))
  4. a=root(tree)
  5. if a==None:pass
  6. else:
  7. print(a)
  8. Through(right(tree))
  9. return None # Through(right(tree))
  10. Through(t)

遍历的顺序为:954628

3、后序遍历(先左节点,再右节点,后根节点)

  1. def Through(tree):
  2. if((is_empty_Bintree(tree))==False):
  3. Through(left(tree))
  4. Through(right(tree))
  5. a=root(tree)
  6. if a==None:pass
  7. else:
  8. print(a)
  9. return None # Through(right(tree))
  10. Through(t)

到此就结束了

希望对你有所帮助

发表评论

表情:
评论列表 (有 0 条评论,262人围观)

还没有评论,来说两句吧...

相关阅读

    相关 python实现

    遍历二叉树就是以一定的规则将二叉树中的结点排列成一个线性序列,从而得到二叉树节点的各种遍历序列。其实质就是对一个非线性结构进行线性操作,使在这个序列中,除了第一个和最后一个结点