找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 6228|回复: 4

python实现二叉树的方法

50

主题

1057

帖子

1108

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1108

活跃会员热心会员最佳导师默默耕耘突出贡献优秀版主荣誉管理论坛元老

blueelwang 发表于 2013-1-25 17:40:26 | 显示全部楼层 |阅读模式
你知道二叉树吗?那你知道怎么用python实现二叉树吗?哈哈,和大家分享一下方法。。。
代码如下:
[code brush:python;toolbar:false;]class Node:
def __init__(self, data = None, left = None, right = None):
self.data = data
self.left = left
self.right = right
class BTree:
def __init__(self, root = None):
self.root = root
def traverse(self, visit):
def tr(node, visit):
if node:
tr(node.left, visit)
tr(node.right, visit)
visit(node.data)

def tr1(node, visit):
stack = []
while len(stack) 0 or node:
if node:
stack.append(node)
node = node.left
else:
node = stack.pop()
visit(node.data)
node = node.right

def tr2(node, visit):
pre = None
stack = []
while len(stack) 0 or node:
while node:
stack.append(node)
node = node.left
node = stack.pop()
if node.right == None or node.right == pre:
visit(node.data)
pre = node
node = None
else:
stack.append(node)
node = node.right


tr(self.root, visit)
print("*******************")
tr2(self.root, visit)

t = BTree(Node("ROOT", Node("Left", Node("left-left"), Node("left-right")), Node("Right", Node("right-left"), Node("right-right"))))
t.traverse(print)[/code]
回复

使用道具 举报

2

主题

4

帖子

81

积分

新手

积分
81
gary721400 发表于 2013-6-5 11:50:03 | 显示全部楼层
好东西啊
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

积分

贫民

积分
0
s_word 发表于 2013-7-2 10:00:25 | 显示全部楼层
这个缩进差点意思啊……看着够费劲的
回复 支持 反对

使用道具 举报

2

主题

11

帖子

11

积分

贫民

积分
11
yhtjay 发表于 2014-12-27 10:20:59 | 显示全部楼层
缩进是python的灵魂啊~
回复 支持 反对

使用道具 举报

0

主题

2

帖子

10

积分

贫民

积分
10
初行 发表于 2015-1-14 13:49:38 | 显示全部楼层
同意楼上观点,格式太惨了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表