二叉树存储
普通做法,二叉树一个节点包括结点的数值以及指向左右子节点的指针
在class Node中
def __init__(self,s,l=None,r=None):
self.val=None
self.l=l
self.r=r
在竞赛中,我们往往使用静态数组实现二叉树,定义一个大小为N的静态结构体数组,使用其来存储一棵二叉树。
#定义静态数组
tree=['']*10000
#根节点
tree[1]
#结点tree[p]的左子节点
tree[2*p]
#结点tree[p]的右子节点
tree[2*p+1]
使用静态数组时,对应的tree假如不是满二叉树,则应该使用-1或者0填补空缺,这样tree对应的静态数组即可使用于任何一个二叉树。
三种遍历方式
先序遍历
EBADCGFIH文章来源:https://www.toymoban.com/news/detail-696803.html
def preorder(p):
print(tree[p],end='')
if tree[2*p]!='':
postorder(2*p)
if tree[2*p+1]!='':
postorder(2*p+1)
按照父、左儿子、右儿子的顺序进行访问文章来源地址https://www.toymoban.com/news/detail-696803.html
到了这里,关于蓝桥杯备赛(Day5)——二叉树的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!