python数据结构与算法(19)

⼆叉树
⼆叉树的基本概念
⼆叉树是每个节点最多有两个⼦树的树结构。通常⼦树被称作“左⼦树”(left subtree)和“右⼦树”(right subtree)
⼆叉树的性质(特性)
性质1: 在⼆叉树的第i层上⾄多有2^(i-1)个结点(i>0) 性质2: 深度为k的⼆叉树⾄多有2^k - 1个结点(k>0) 性质3: 对于任意⼀棵⼆叉树,如果其叶结点数为N0,⽽度数为2的结点总数 为N2,则N0=N2+1; 性质4:具有n个结点的完全⼆叉树的深度必为 log2(n+1) 性质5:对完全⼆叉树,若从上⾄下、从左⾄右编号,则编号为i 的结点,其左 孩⼦编号必为2i,其右孩⼦编号必为2i+1;其双亲的编号必为i/2(i=1 时为 根,除外)
(1)完全⼆叉树——若设⼆叉树的⾼度为h,除第 h 层外,其它各层 (1~ h-1) 的结点数都达到最⼤个数,第h层有叶⼦结点,并且叶⼦结点都是 从左到右依次排布,这就是完全⼆叉树。
python数据结构与算法(19)
(2)满⼆叉树——除了叶结点外每⼀个结点都有左右⼦叶且叶⼦结点都处在最 底层的⼆叉树。
python数据结构与算法(19)
⼆叉树的节点表示以及树的创建
通过使⽤Node类中定义三个属性,分别为elem本身的值,还有lchild左孩⼦ 和rchild右孩⼦

class   Node(object):               """节点类"""               def __init__(self,  elem=-1,    lchild=None,    rchild=None):                               self.elem   =   elem                                self.lchild =   lchild                              self.rchild =   rchild

树的创建,创建⼀个树的类,并给⼀个root根节点,⼀开始为空,随后添加节 点

class   Tree(object):               """树类"""                def __init__(self,  root=None):                             self.root   =   root
                def add(self,   elem):                              """为树添加节点"""          
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值