代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Python
】
Python实现二叉树
作者:
/ 发布于
2011/1/4
/
595
<div>!/usr/bin/python # A binary ordered tree example class CNode: left , right, data = None, None, 0 def __init__(self, data): # initializes the data members self.left = None self.right = None self.data = data class CBOrdTree: def __init__(self): # initializes the root member self.root = None def addNode(self, data): # creates a new node and returns it return CNode(data) def insert(self, root, data): # inserts a new data if root == None: # it there isn't any data # adds it and returns return self.addNode(data) else: # enters into the tree if data <= root.data: # if the data is less than the stored one # goes into the left-sub-tree root.left = self.insert(root.left, data) else: # processes the right-sub-tree root.right = self.insert(root.right, data) return root def lookup(self, root, target): # looks for a value into the tree if root == None: return 0 else: # if it has found it... if target == root.data: return 1 else: if target < root.data: # left side return self.lookup(root.left, target) else: # right side return self.lookup(root.right, target) def minValue(self, root): # goes down into the left # arm and returns the last value while(root.left != None): root = root.left return root.data def maxDepth(self, root): if root == None: return 0 else: # computes the two depths ldepth = self.maxDepth(root.left) rdepth = self.maxDepth(root.right) # returns the appropriate depth return max(ldepth, rdepth) + 1 def size(self, root): if root == None: return 0 else: return self.size(root.left) + 1 + self.size(root.right) def printTree(self, root): # prints the tree path if root == None: pass else: self.printTree(root.left) print root.data, self.printTree(root.right) def printRevTree(self, root): # prints the tree path in reverse # order if root == None: pass else: self.printRevTree(root.right) print root.data, self.printRevTree(root.left) if __name__ == "__main__": # create the binary tree BTree = CBOrdTree() # add the root node root = BTree.addNode(0) # ask the user to insert values for i in range(0, 5): data = int(raw_input("insert the node value nr %d: " % i)) # insert values BTree.insert(root, data) print BTree.printTree(root) print BTree.printRevTree(root) print data = int(raw_input("insert a value to find: ")) if BTree.lookup(root, data): print "found" else: print "not found" print BTree.minValue(root) print BTree.maxDepth(root) print BTree.size(root) </div>
试试其它关键字
二叉树
同语言下
.
比较两个图片的相似度
.
过urllib2获取带有中文参数的url内容
.
不下载获取远程图片的宽度和高度及文件大小
.
通过qrcode库生成二维码
.
通过httplib发送GET和POST请求
.
Django下解决小文件下载
.
遍历windows的所有窗口并输出窗口标题
.
根据窗口标题调用窗口
.
python 抓取搜狗指定公众号
.
pandas读取指定列
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
贡献的其它代码
Label
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3