python二叉树增加节点_23.数据结构——二叉树添加节点和广度优先遍历的实现(笔记)...

二叉树的节点表示以及树的创建

通过使用Node类中定义三个属性,分别为item本身的值,还有lchild左孩子和rchild右孩子

class Node(object):

"""节点类"""

def __init__(self,item):

self.item = item

self.lchild = None

self.rchild = None

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

class BinaryTree(object):

"""二叉树"""

def __init__(self, node=None): #默认为空意思是可以和列表一样建一个空的节点

self.root = node

def add(self, item):

"""广度优先遍历方式添加节点"""

if self.root is None:

self.root = Node(item)

else:

queue = []

queue.append(self.root)

while len(queue) > 0:

node = queue.pop(0)

if not node.lchild:

node.lchild = Node(item)

return

else:

queue.append(node.lchild)

if not node.rchild:

node.rchild = Node(item)

return

else:

queue.append(node.rchild)

def breadh_travel(self):

"""广度优先遍历"""

if self.root is None:

return

queue = []

queue.append(self.root)

while len(queue) > 0:

node = queue.pop(0)

print(node.item, end=' ')

if node.lchild:

queue.append(node.lchild)

if node.rchild:

queue.append(node.rchild)

tree = BinaryTree()

tree.add(0)

tree.add(1)

tree.add(2)

tree.add(3)

tree.add(4)

tree.add(5)

tree.add(6)

tree.add(7)

tree.add(8)

tree.add(9)

tree.breadh_travel()

结果:

是以队列的形式判断没一个节点下面是否为空,但队列其实是线性表的进一步封装,之前队列部分,实现也是通过列表实现的(满足先进先出且,从一头进一头出,就是队列的实行),所以为了方便,这里直接用列表实现队列的功能。

什么叫广度优先遍历

原文链接:https://blog.csdn.net/yu_1628060739/article/details/106443146

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值