如何实现Python多叉树

作者&投稿:表房 (若有异议请与网页底部的电邮联系)
python 怎样实现多叉树~

class node:
def __init__(self, data):
self._data = data
self._children = []
def getdata(self):
return self._data
def getchildren(self):
return self._children
def add(self, node):
##if full
if len(self._children) == 4:
return False
else:
self._children.append(node)
def go(self, data):
for child in self._children:
if child.getdata() == data:
return child
return None
class tree:
def __init__(self):
self._head = node('header')
def linktohead(self, node):
self._head.add(node)
def insert(self, path, data):
cur = self._head
for step in path:
if cur.go(step) == None:
return False
else:
cur = cur.go(step)
cur.add(node(data))
return True
def search(self, path):
cur = self._head
for step in path:
if cur.go(step) == None:
return None
else:
cur = cur.go(step)
return cur

class node: def __init__(self, data): self._data = data self._children = [] def getdata(self): return self._data def getchildren(self): return self._children def add(self, node): ##if full if len(self._children) == 4: return False else: self._children.append(node) def go(self, data): for child in self._children: if child.getdata() == data: return child return None class tree: def __init__(self): self._head = node('header') def linktohead(self, node): self._head.add(node) def insert(self, path, data): cur = self._head for step in path: if cur.go(step) == None: return False else: cur = cur.go(step) cur.add(node(data)) return True def search(self, path): cur = self._head for step in path: if cur.go(step) == None: return None else: cur = cur.go(step) return cur '''define node'''a = node('A')b = node('B')c = node('C')d = node('D')e = node('E')f = node('F')g = node('G')h = node('H')i = node('I')j = node('J')k = node('K')l = node('L')m = node('M')n = node('N')o = node('O') '''adding node to build true'''a.add(b)a.add(g)a.add(h)b.add(c)b.add(e)g.add(i)g.add(j)g.add(k)g.add(l)h.add(m)h.add(n)h.add(o)c.add(d)c.add(f)i.add(node(29))j.add(node(28))k.add(node(27))l.add(node(26))m.add(node(25))n.add(node(24))o.add(node(23))f.add(node(30)) tree = tree()tree.linktohead(a) #testcaseprint 'Node',tree.search("ABE").getdata()print 'Node',tree.search("ABC").getdata()print 'Node',tree.search("AHM").getdata()tree.insert("ABCD", 1)for i in d.getchildren(): print 'value after', d.getdata(),' is ', i.getdata()

class node:

    def __init__(self, data):
        self._data = data
        self._children = []

    def getdata(self):
        return self._data

    def getchildren(self):
        return self._children

    def add(self, node):
        ##if full
        if len(self._children) == 4:
            return False
        else:
            self._children.append(node)

    def go(self, data):
        for child in self._children:
            if child.getdata() == data:
                return child
        return None

class tree:

    def __init__(self):
        self._head = node('header')

    def linktohead(self, node):
        self._head.add(node)

    def insert(self, path, data):
        cur = self._head
        for step in path:
            if cur.go(step) == None:
                return False
            else:
                cur = cur.go(step)
        cur.add(node(data))
        return True

    def search(self, path):
        cur = self._head
        for step in path:
            if cur.go(step) == None:
                return None
            else:
                cur = cur.go(step)
        return cur
                        

'''
define node
'''
a = node('A')
b = node('B')
c = node('C')
d = node('D')
e = node('E')
f = node('F')
g = node('G')
h = node('H')
i = node('I')
j = node('J')
k = node('K')
l = node('L')
m = node('M')
n = node('N')
o = node('O')

'''
adding node to build true
'''
a.add(b)
a.add(g)
a.add(h)
b.add(c)
b.add(e)
g.add(i)
g.add(j)
g.add(k)
g.add(l)
h.add(m)
h.add(n)
h.add(o)
c.add(d)
c.add(f)
i.add(node(29))
j.add(node(28))
k.add(node(27))
l.add(node(26))
m.add(node(25))
n.add(node(24))
o.add(node(23))
f.add(node(30))


tree = tree()
tree.linktohead(a)


#testcase
print 'Node',tree.search("ABE").getdata()
print 'Node',tree.search("ABC").getdata()
print 'Node',tree.search("AHM").getdata()
tree.insert("ABCD", 1)
for i in d.getchildren():
    print 'value after', d.getdata(),' is ', i.getdata()


二叉树的孩子是node.多叉树的孩子是一个list。


如何用C++或者python实现接收客户端发送的post请求
一个http请求包括三个部分,分别为请求行,请求报头(请求头),消息主体(请求体),类似以下这样:HTTP协议规定post提交的数据必须放在消息主体中,但是协议并没有规定必须使用什么编码方式。服务端通过是根据请求头中的Content-Type字段来获知请求中的消息主体是用何种方式进行编码,再对消息主体进行解析。

Python自学心得分享
学习python,我首先根据自己完全代码零基础的情况下,为什么学习Python作为核心问题,进行了一个自我定位以及目标定位,我认为只要有一个目标,那么就找方法去打成目标就行了。 我是完全零基础,选择学习Python主要还是因为看到大家都说Python是相对简单,比较好入门IT行业的,而我的目的也是希望学习完Python可以找到一份相应的...

Python可以做系统底层开发吗
3.1 Debugee,敢问你在何处24 3.2 获取寄存器状态信息33 3.2.1 线程枚举34 3.2.2 功能整合35 3.3 实现调试事件处理例程39 3.4 无所不能的断点44 3.4.1 软断点44 3.4.2 硬件断点49 3.4.3 内存断点55 3.5 总结59 第4章 PyDbg——Windows下的纯Python调试器60 4...

python是什么语言
python的中文名称是蟒蛇。Python是一种计算机程序设计语言。是一种动态的、面向对象的脚本语言,最初是用来编写自动化脚本的,随着版本的不断更新和语言新功能的添加,越来越多被用于独立的、大型项目的开发。Python特点主要有以下几个方面:1、简单:Python是一种代表简单主义思想的语言。阅读一个良好的...

Python函数中的局部变量和全局变量
要深入学习Python,特别是应用于数据分析的领域,推荐两本书:《Python机器学习原理与算法实现》和《Python数据科学应用从入门到精通》。前者适合机器学习初学者,后者则涵盖了数据分析的全流程,包括数据清洗、特征工程、可视化和建模,适合零基础者。这两本书都配有丰富的学习资料和视频讲解,让学习更加...

Python爬虫:想听榜单歌曲?只需要14行代码即可搞定
虽然说XPath比正则表达式用起来方便,但是没有最方便,只有更方便。我们的BeautifulSoup库就能做到更方便的爬取想要的东西。使用之前,还是老规矩,先安装BeautifulSoup库,指令如下:其中文开发文档:BeautifulSoup库是一个强大的Python语言的XML和HTML解析库。它提供了一些简单的函数来处理导航、搜索、修改分析树...

python是个什么东西
Python是一种跨平台的计算机程序设计语言。是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。Python的创始人为荷兰人吉多·范罗苏姆(GuidovanRossum)。1989年圣诞节...

在Python中使用Asyncio系统(3-4)​Task 和 Future
在Python 3.8之前可以这样做,但现在不允许这么做了。任务实例是协程对象的包装器,它们的结果值只能在内部设置为底层协程函数的结果,如 示例 3-17所示那样。 示例3-17. 在task上调用set_result (L13)唯一的区别是我们创建的是Task实例而不是Future实例。当然,Task API要求我们提供一个协程;这里我们使用sleep()...

技术杂文 | 关于Python的self最深入理解
二,详细解释对象及其self参数,类是对象的抽象概念,而对象则是类的具体实例,方法的第一个参数self是访问对象内部属性和方法的关键。三,探讨self在计算机中的实现,它实际上是对象在内存中的标识,用于访问和操作对象的属性。在Python中,self是一个特殊的参数,用于指向对象本身,使得在方法内部可以操作...

如何用python做一个设备运维软件
Python开发的jumpserver跳板机 jumpserver跳板机是一款由Python编写开源的跳板机(堡垒机)系统,实现了跳板机应有的功能。基于ssh协议来管理,客户端无需安装agent。企业主要用于解决:可视化安全管理 特点:完全开源,GPL授权 Python编写,Django开发框架,容易再次开发 实现了跳板机基本功能:认证、授权、审计。

兰山区18027317336: 如何实现Python多叉树 -
有傅一培: class node: def __init__(self, data): self._data = data self._children = [] def getdata(self): return self._data def getchildren(self): return self._children def add(self, node): ##if full if len(self._children) == 4: return False else: self._children.append(node) ...

兰山区18027317336: python怎么做二叉查找树
有傅一培: 可以用元组或者列表来做,元素用字典就可以了,例如: list=[] item_tuple=() item_dict={} your_list = list[item_tuple[item_dict,..],..]

兰山区18027317336: 如何用python构造一个n层的完全二叉树 -
有傅一培: 用python构造一个n层的完全二叉树的代码如下: typedef struct { int weight; int parent, lchild, rchild;} HTNode ,*HuffmanTree; // 动态分配数组存储huffman树 算法设计 void createHuffmantree(){ ht=(HuffmanTree)malloc(m+1)*sizeof(HTNode);// 动...

兰山区18027317336: python 二叉树是怎么实现的 -
有傅一培: #coding:utf-8#author:Elvis class TreeNode(object): def __init__(self): self.data = '#' self.l_child = None self.r_child = None class Tree(TreeNode): #create a tree def create_tree(self, tree): data = raw_input('->') if data == '#': tree = None else: tree.data ...

兰山区18027317336: 如何将数据存储为二叉树python -
有傅一培: (1)二叉树是有序树,即使只有一个子树,也必须区分左、右子树;(2)二叉树的每个结点的度不能大于2,只能取0、1、2三者之一;(3)二叉树中所有结点的形态有5种:空结点、无左右子树的结点、只有左子树的结点、只有右子树的结点和具有左右子树的结点.

兰山区18027317336: Python 如何实现如下树功能: 样例数据:tmp=[[0,'A'],[1,'B'],[2,'B1'],[2,'B2'],[3,' -
有傅一培: 1234567891011121314151617181920212223242526272829 #!/usr/bin/env python# coding=utf-8#python 2.7 tmp=[[0,'A'],[1,'B'],[2,'B1'],[2,'B2'],[3,'B21'],[3,'B22'],[3,'B23'],[1,'C'],[1,'D']] tmp_ =tmp[1:] printtmp[0][1] tmp__ =tmp[1][1] foridx,i ...

兰山区18027317336: 二叉树有什么方法变成多叉树的方法? -
有傅一培: 哈哈,这简单!二叉树转化为森林,森林转化为数,不过好像还是两个叉叉..呵呵 记得采纳啊

兰山区18027317336: 如何用Python生成多个随机矩阵 -
有傅一培: numpy.random包可以实现这一功能.numpy包是Python的一种开源的数值计算扩展.这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表结构要高效的多,同时该结构也可以用来表示矩阵. from numpy import random randArray = random.random(size=(2,4)) random函数接收需要生成随机矩阵的形状的元组作为唯一参数.上面的代码将会返回一个两行四列的随机矩阵,随机数的值位于0到1之间,矩阵是numpy.array类型.除了random函数外,还有生成整数随机矩阵的函数randint等等.

兰山区18027317336: 二叉排序树实现1) 编程实现二叉排序树,包括生成、插入,删除 -
有傅一培: #include <stdio.h>struct node { int data;struct node *lchild;struct node *rchild;}; typedef struct node NODE;(1)递归函数NODE *search(t, x)NODE *t;char x;{ if (t==NULL)return(NULL);else{ if (t->data==x)return(t);if (x<t->data)return(...

兰山区18027317336: 二叉树创建问题,怎么实现输入多组数据 ? -
有傅一培:#include #include typedef struct BiTreeNode{int data;struct BiTreeNode *lchild,*rchild; //左右孩子指针 }BiTNode,*BiTree; void print2 ( BiTree T ) {if ( T ){print2 ( T->lchild ) ;printf ( "%c" , T->data ) ;print2 ( T->rchild ) ;} // printf ( ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网