代码语言
.
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
】
一个简单的二叉树实现
作者:
木辰寿
/ 发布于
2012/11/26
/
846
#!/usr/bin/env python # -*- coding: utf-8 -*- import os class Node(object): """docstring for Node""" def __init__(self, v = None, left = None, right=None, parent=None): self.value = v self.left = left self.right = right self.parent = parent class BTree(object): """docstring for BtTee """ def __init__(self): self.root = None self.size = 0 def insert(self, node): n = self.root if n == None: self.root = node return while True: if node.value <= n.value: if n.left == None: node.parent = n n.left = node break else: n = n.left if node.value > n.value: if n.right == None: n.parent = n n.right = node break else: n = n.right def find(self, v): n = self.root while True: if n == None: return None if v == n.value: return n if v < n.value: n = n.left continue if v > n.value: n = n.right def find_successor(node): '''查找后继结点''' assert node != None and node.right != None n = node.right while n.left != None: n = n.left return n def delete(self, v): n = self.find(v) print "delete:",n.value del_parent = n.parent if del_parent == None: self.root = None; return if n != None: if n.left != None and n.right != None: succ_node = find_successor(n) parent = succ_node.parent if succ_node == parent.left: #if succ_node is left sub tree parent.left = None if succ_node == parent.right: #if succ_node is right sub tree parent.right = None if del_parent.left == n: del_parent.left = succ_node if del_parent.right == n: del_parent.right = succ_node succ_node.parent = n.parent succ_node.left = n.left succ_node.right = n.right del n elif n.left != None or n.right != None: if n.left != None: node = n.left else: node = n.right node.parent = n.parent if del_parent.left == n: del_parent.left = node if del_parent.right == n: del_parent.right = node del n else: if del_parent.left == n: del_parent.left = None if del_parent.right == n: del_parent.right = None def tranverse(self): def pnode(node): if node == None: return if node.left != None: pnode(node.left) print node.value if node.right != None: pnode(node.right) pnode(self.root) def getopts(): import optparse, locale parser = optparse.OptionParser() parser.add_option("-i", "--input", dest="input", help=u"help name", metavar="INPUT") (options, args) = parser.parse_args() #print options.input return (options.input) if __name__ == '__main__': al = [23, 45, 67, 12, 78,90, 11, 33, 55, 66, 89, 88 ,5,6,7,8,9,0,1,2,678] bt = BTree() for x in al : bt.insert(Node(x)) bt.delete(12) bt.tranverse() n = bt.find(12) if n != None: print "find valud:",n.value
试试其它关键字
二叉树
同语言下
.
比较两个图片的相似度
.
过urllib2获取带有中文参数的url内容
.
不下载获取远程图片的宽度和高度及文件大小
.
通过qrcode库生成二维码
.
通过httplib发送GET和POST请求
.
Django下解决小文件下载
.
遍历windows的所有窗口并输出窗口标题
.
根据窗口标题调用窗口
.
python 抓取搜狗指定公众号
.
pandas读取指定列
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
木辰寿
贡献的其它代码
(
1
)
.
一个简单的二叉树实现
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3