Python论坛  - 讨论区

标题:[python-chinese] 关于2叉树

2006年07月08日 星期六 19:13

linda.s samrobertsmith at gmail.com
Sat Jul 8 19:13:12 HKT 2006

用如下代码,
>>> t7=BinaryTree('5')
>>> t7.addNode('3')
>>> t7.addNode('9')
>>> print t7.left
None
为什么是None而不是3?

class BinaryTree:

    def __init__(self, key, left=None, right=None, parent=None):
        self.key = key
        self.left = left
        self.right = right
        self.parent = parent

    def __str__(self):
        return str(self.left)
        return str(self.key)

    def addNode(self,key):
        """Add a node in the proper location."""
        if key < self.key:
            if self.left:
                self.left.addNode(key)
            else:
                self.left = BinaryTree(key, parent=self)
        elif key > self.key:
            if self.right:
                self.right.addNode(key)
            else:
                self.right = BinaryTree(key, parent=self)

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年07月08日 星期六 19:38

刘鑫 march.liu at gmail.com
Sat Jul 8 19:38:16 HKT 2006

给你改了两处代码。

在06-7-8,linda. s <samrobertsmith at gmail.com> 写道:
>
> 用如下代码,
> >>> t7=BinaryTree('5')
> >>> t7.addNode('3')
> >>> t7.addNode('9')
> >>> print t7.left
> None
> 为什么是None而不是3?
>
> class BinaryTree:
>
>    def __init__(self, key, left=None, right=None, parent=None):
>        self.key = key
>        self.left = left
>        self.right = right
>        self.parent = parent
>
>    def __str__(self):
>        return str(self.left)
>        return str(self.key)
>
>    def addNode(self,key):
>        """Add a node in the proper location."""
>        if key < self.key:
>            if self.left == None:
>                self.left = BinaryTree(key, parent=self)
>            else:
>                self.left.addNode(key)
>        elif key > self.key:
>            if self.right == None:
>                self.right = BinaryTree(key, parent=self)
>           else:
>                self.right.addNode(key)
>
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request at lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>
>


-- 
欢迎访问:
http://blog.csdn.net/ccat

刘鑫
March.Liu
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060708/8e9b498b/attachment.html

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年07月08日 星期六 19:41

limodou limodou at gmail.com
Sat Jul 8 19:41:36 HKT 2006

On 7/8/06, linda. s <samrobertsmith at gmail.com> wrote:
>     def __str__(self):
>         return str(self.left)
>         return str(self.key)
>

这里多了一个return。把前面那个去掉。

-- 
I like python!
My Blog: http://www.donews.net/limodou
My Django Site: http://www.djangocn.org
NewEdit Maillist: http://groups.google.com/group/NewEdit

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年07月08日 星期六 20:11

linda.s samrobertsmith at gmail.com
Sat Jul 8 20:11:00 HKT 2006

是行了.好象逻辑没有改啊?为什么可以了?

On 7/8/06, linda. s <samrobertsmith at gmail.com> wrote:
> 用如下代码,
> >>> t7=BinaryTree('5')
> >>> t7.addNode('3')
> >>> t7.addNode('9')
> >>> print t7.left
> None
> 为什么是None而不是3?
>
> class BinaryTree:
>
>    def __init__(self, key, left=None, right=None, parent=None):
>        self.key = key
>        self.left = left
>        self.right = right
>        self.parent = parent
>
>    def __str__(self):
>        return str(self.left)
>        return str(self.key)
>
>    def addNode(self,key):
>        """Add a node in the proper location."""
>        if key < self.key:
>            if self.left:
>                self.left.addNode(key)
>            else:
>                self.left = BinaryTree(key, parent=self)
>        elif key > self.key:
>            if self.right:
>                self.right.addNode(key)
>            else:
>                self.right = BinaryTree(key, parent=self)
>

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年07月08日 星期六 20:14

刘鑫 march.liu at gmail.com
Sat Jul 8 20:14:45 HKT 2006

None不等同于False,比较的时候要显示写出var==None

在06-7-8,linda. s <samrobertsmith at gmail.com> 写道:
>
> 是行了.好象逻辑没有改啊?为什么可以了?
>
> On 7/8/06, linda. s <samrobertsmith at gmail.com> wrote:
> > 用如下代码,
> > >>> t7=BinaryTree('5')
> > >>> t7.addNode('3')
> > >>> t7.addNode('9')
> > >>> print t7.left
> > None
> > 为什么是None而不是3?
> >
> > class BinaryTree:
> >
> >    def __init__(self, key, left=None, right=None, parent=None):
> >        self.key = key
> >        self.left = left
> >        self.right = right
> >        self.parent = parent
> >
> >    def __str__(self):
> >        return str(self.left)
> >        return str(self.key)
> >
> >    def addNode(self,key):
> >        """Add a node in the proper location."""
> >        if key < self.key:
> >            if self.left:
> >                self.left.addNode(key)
> >            else:
> >                self.left = BinaryTree(key, parent=self)
> >        elif key > self.key:
> >            if self.right:
> >                self.right.addNode(key)
> >            else:
> >                self.right = BinaryTree(key, parent=self)
> >
>
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request at lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>
>


-- 
欢迎访问:
http://blog.csdn.net/ccat

刘鑫
March.Liu
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060708/2fa9f540/attachment.htm

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年07月08日 星期六 20:17

limodou limodou at gmail.com
Sat Jul 8 20:17:55 HKT 2006

On 7/8/06, linda. s <samrobertsmith at gmail.com> wrote:
> 是行了.好象逻辑没有改啊?为什么可以了?
>
因为两个return,只能执行前面的,后面的是执行不了的。所以按照你的程序的意思,应该保留后面那个。

-- 
I like python!
My Blog: http://www.donews.net/limodou
My Django Site: http://www.djangocn.org
NewEdit Maillist: http://groups.google.com/group/NewEdit

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年07月08日 星期六 21:20

linda.s samrobertsmith at gmail.com
Sat Jul 8 21:20:28 HKT 2006

前面那个例子用'5','3'和'9',
下面直接用数字,
>>> t9=BinaryTree(10)
>>> t9.addNode(2)
>>> t9.addNode(3)
>>> t9.addNode(12)
用字符串和数字在程序里会不一样吗(对不起,我老是搞不清楚)?
另外一个问题是:有什么办法图示t9的结构(尤其是nodes越来越多以后),能用PYTHON写吗?

On 7/8/06, linda. s <samrobertsmith at gmail.com> wrote:
> 用如下代码,
> >>> t7=BinaryTree('5')
> >>> t7.addNode('3')
> >>> t7.addNode('9')
> >>> print t7.left
> None
> 为什么是None而不是3?
>
> class BinaryTree:
>
>    def __init__(self, key, left=None, right=None, parent=None):
>        self.key = key
>        self.left = left
>        self.right = right
>        self.parent = parent
>
>    def __str__(self):
>        return str(self.left)
>        return str(self.key)
>
>    def addNode(self,key):
>        """Add a node in the proper location."""
>        if key < self.key:
>            if self.left:
>                self.left.addNode(key)
>            else:
>                self.left = BinaryTree(key, parent=self)
>        elif key > self.key:
>            if self.right:
>                self.right.addNode(key)
>            else:
>                self.right = BinaryTree(key, parent=self)
>

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年07月08日 星期六 21:43

swordsp sparas2006 at gmail.com
Sat Jul 8 21:43:34 HKT 2006

On 7/8/06, linda. s <samrobertsmith at gmail.com> wrote:
>
> 前面那个例子用'5','3'和'9',
> 下面直接用数字,
> >>> t9=BinaryTree(10)
> >>> t9.addNode(2)
> >>> t9.addNode(3)
> >>> t9.addNode(12)
> 用字符串和数字在程序里会不一样吗(对不起,我老是搞不清楚)?


string比较大小是从左至右的,只有位数相等时才和int一致。
例如:
In [1]: 10<5
Out[1]: False
In [2]: '10'<'5'
Out[2]: True
 In [3]: '10'<'05'
Out[3]: False

另外一个问题是:有什么办法图示t9的结构(尤其是nodes越来越多以后),能用PYTHON写吗?


从上至下递归遍历(先序或者后序无所谓),假设屏幕宽为80,根节点在第一行,"显示范围"是(0,79),两个子节点在第二行,"显示范围"分别为(0,39)和(40,79),以此类推,每个节点所在的行数等于其深度,"显示范围"是其父节点的前一半或者后一半。
最后每个节点最后就画在相应行的"显示范围"的正中间。
如果需要的话可以在行与行之间增加辅助符号,让它看起来更像一颗"树"。

事实上,屏幕的宽度有限,节点多了以后总是很难全画出来的。
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060708/4bb551b3/attachment.html

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年07月08日 星期六 22:52

ygao ygao2004 at gmail.com
Sat Jul 8 22:52:12 HKT 2006

*你的这个实现,不是2叉树实现。*

On 7/8/06, linda. s <samrobertsmith at gmail.com> wrote:
>
> 用如下代码,
> >>> t7=BinaryTree('5')
> >>> t7.addNode('3')
> >>> t7.addNode('9')
> >>> print t7.left
> None
> 为什么是None而不是3?
>
> class BinaryTree:
>
>    def __init__(self, key, left=None, right=None, parent=None):
>        self.key = key
>        self.left = left
>        self.right = right
>        self.parent = parent
>
>    def __str__(self):
>        return str(self.left)
>        return str(self.key)
>
>    def addNode(self,key):
>        """Add a node in the proper location."""
>        if key < self.key:
>            if self.left:
>                self.left.addNode(key)
>            else:
>                self.left = BinaryTree(key, parent=self)
>        elif key > self.key:
>            if self.right:
>                self.right.addNode(key)
>            else:
>                self.right = BinaryTree(key, parent=self)
>
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request at lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>
>


-- 
※※※※※※※※※※※※※※※※※※※※※※※※
My blog:  http://blog.donews.com/ygao
Forum    http://groups.google.com/group/python_study
※※※※※※※※※※※※※※※※※※※※※※※※
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060708/ed18d21f/attachment.htm

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年07月09日 星期日 18:37

linda.s samrobertsmith at gmail.com
Sun Jul 9 18:37:58 HKT 2006

能给我一个在python里用2叉树的例子吗?

On 7/8/06, ygao <ygao2004 at gmail.com> wrote:
> 你的这个实现,不是2叉树实现。
>
>
> On 7/8/06, linda. s <samrobertsmith at gmail.com> wrote:
> >
> 用如下代码,
> >>> t7=BinaryTree('5')
> >>> t7.addNode('3')
> >>> t7.addNode('9')
> >>> print t7.left
> None
> 为什么是None而不是3?
>
> class BinaryTree:
>
>    def __init__(self, key, left=None, right=None, parent=None):
>        self.key = key
>        self.left = left
>        self.right = right
>        self.parent = parent
>
>    def __str__(self):
>        return str(self.left)
>        return str(self.key)
>
>    def addNode(self,key):
>        """Add a node in the proper location."""
>        if key < self.key:
>            if self.left:
>                self.left.addNode(key)
>            else:
>                self.left = BinaryTree(key, parent=self)
>        elif key > self.key:
>            if self.right:
>                self.right.addNode(key)
>            else:
>                self.right = BinaryTree(key, parent=self)
>
> _______________________________________________
>
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to
> python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to
> python-chinese-request at lists.python.cn
> Detail Info:
> http://python.cn/mailman/listinfo/python-chinese
>
>
>
>
>
> --
> ※※※※※※※※※※※※※※※※※※※※※※※※
> My blog:  http://blog.donews.com/ygao
> Forum     http://groups.google.com/group/python_study
> ※※※※※※※※※※※※※※※※※※※※※※※※
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to
> python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to
> python-chinese-request at lists.python.cn
> Detail Info:
> http://python.cn/mailman/listinfo/python-chinese
>
>

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年07月09日 星期日 19:41

linda.s samrobertsmith at gmail.com
Sun Jul 9 19:41:24 HKT 2006

On 7/8/06, limodou <limodou at gmail.com> wrote:
> On 7/8/06, linda. s <samrobertsmith at gmail.com> wrote:
> >     def __str__(self):
> >         return str(self.left)
> >         return str(self.key)
> >
>
> 这里多了一个return。把前面那个去掉。

    def __str__(self):
        return str(self.key)
是什么意思?如果这是一个string的话,
为什么可以与2相加?
>>> t.left.key+2
3
>>>

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年07月09日 星期日 22:36

limodou limodou at gmail.com
Sun Jul 9 22:36:31 HKT 2006

On 7/9/06, linda. s <samrobertsmith at gmail.com> wrote:
> On 7/8/06, limodou <limodou at gmail.com> wrote:
> > On 7/8/06, linda. s <samrobertsmith at gmail.com> wrote:
> > >     def __str__(self):
> > >         return str(self.left)
> > >         return str(self.key)
> > >
> >
> > 这里多了一个return。把前面那个去掉。
>
>     def __str__(self):
>         return str(self.key)
> 是什么意思?如果这是一个string的话,
> 为什么可以与2相加?
> >>> t.left.key+2
> 3
> >>>
>
key不就是一个结点的值嘛?要看程序啊。

你前一个示例用的字符串,但后一个示例却改为了整数,整数相加当然可以了。

-- 
I like python!
My Blog: http://www.donews.net/limodou
My Django Site: http://www.djangocn.org
NewEdit Maillist: http://groups.google.com/group/NewEdit

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年07月10日 星期一 07:00

linda.s samrobertsmith at gmail.com
Mon Jul 10 07:00:07 HKT 2006

    def __str__(self):
         return str(self.key)
是什么意思?回一个字符串吗?
> > >>> t.left.key+2
> > 3
> > >>>
> >
> key不就是一个结点的值嘛?要看程序啊。
>
> 你前一个示例用的字符串,但后一个示例却改为了整数,整数相加当然可以了。
>
> --
> I like python!
> My Blog: http://www.donews.net/limodou
> My Django Site: http://www.djangocn.org
> NewEdit Maillist: http://groups.google.com/group/NewEdit
>
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request at lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>
>

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年07月10日 星期一 08:27

limodou limodou at gmail.com
Mon Jul 10 08:27:37 HKT 2006

On 7/10/06, linda. s <samrobertsmith at gmail.com> wrote:
>     def __str__(self):
>          return str(self.key)
> 是什么意思?回一个字符串吗?

当然了,因为__str__就应该返回一个字符串啊。使用str()就是为了确定返回一个字符串。

-- 
I like python!
My Blog: http://www.donews.net/limodou
My Django Site: http://www.djangocn.org
NewEdit Maillist: http://groups.google.com/group/NewEdit

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年07月10日 星期一 11:33

邓作霖 pse-dengzl at pegasus.tj.cn
Mon Jul 10 11:33:34 HKT 2006

我想从PDF文件中直接取得文本的内容,现在使用的方法是从文件中的Stream对象 
中取得使用Flatedecode方式压缩的流数据,然后用 python的zlib解压缩,但是解 
压缩后并不能还原出字符串的数据,我想并不是因为PDF的8bit编码的问题,因为 
返回的数据很简单也很有规律,就像一段段“AAAAAA”,我是用16进制编辑器从PDF 
的原文件中截取的流数据,在两个换行之间,我想这种截取方法不会有什么问题, 
问题是不是出在解压缩方法不正确?有谁搞过这项工作可以指导一下我吗,谢谢。

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年07月10日 星期一 22:20

3751 lwm3751 at gmail.com
Mon Jul 10 22:20:46 HKT 2006

我不了解pdf格式到底是怎么样的,请问你这样做前有没有了解过它的文件格式了。我原来用的是xpdf转换成文本文件的。

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年07月11日 星期二 09:40

邓作霖 pse-dengzl at pegasus.tj.cn
Tue Jul 11 09:40:25 HKT 2006

您好;

   在这之前我看了一点PDF文件结构的参考,就是Adobe官方发的那个文档,它的 
文件里面可以看见文本的标签,文件的实际内容比如文本和图片通常都是保存成流 
对象(Stream Object),现在可以找到流的位置,因为用文本编辑器打开的时候 
可以看到stream和endstream中间的内容,我现在不太了解pytyhon 的zlib模块中 
的decompress()过程是不是适用于解压缩Flatedecode这种方法压缩的数据,能够 
解压缩而不报错是没有问题的,但是解压缩的结果我想是不正确的,我用一个只有 
一句英文的简单PDF文件试了一下,返回的结果不是字符串,还是二进制的数据, 
但是里面包含了几乎90%的空字符 /x00(不知道我对这组符号是空字符的判断是否 
正确),所以我想可能是解压缩的方法不对。


3751 写道:
> 我不了解pdf格式到底是怎么样的,请问你这样做前有没有了解过它的文件格式 
> 了。我原来用的是xpdf转换成文本文件的。
> ------------------------------------------------------------------------
>
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request at lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese


[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号