资讯专栏INFORMATION COLUMN

二叉树生成字符串,字符串生成二叉树

jayce / 3715人阅读

摘要:通常的方式,都是二叉树生成字符串字符串生成二叉树,遵循二叉树的递归生成字符串的方式进行遍历。碰到终止标志,才终止深度递归转向另一个方向。原因字符串的遍历方式,除了顺序遍历方式,也可以采用递归便利方式,遵循递归的规律。

通常的方式,都是二叉树生成字符串
字符串生成二叉树,遵循二叉树的递归生成字符串的方式进行遍历。

"""
    1.二叉树先序遍历,可以保证按照容易理解的角度从上到下进行遍历,显示,输出
    2.先序后序中序遍历,都是 深度递归,显示上都会与直接直觉有出入
    3.通过遍历后的字符串,反出建立 二叉树,可以尊徐 序列化的模式进行建立,同样适用。
      由于遍历是深度递归形成字符串,所以生成二叉树同样可以深度递归。碰到终止标志,才终止深度递归转向另一个方向。
    bug原因:字符串的遍历方式,除了顺序遍历方式,也可以采用递归便利方式,遵循递归的规律。

"""
class TreeNode(object):
    def __init__(self,value):
        self.value=value
        self.leftnode=None
        self.rightnode=None
str_raw="1246###5#73#89##"
def deserialize(chars):
    if len(chars)==0:
        return None
    assert isinstance(chars,list)
    char_cur=chars.pop(0)
    if char_cur=="#":
        return None
    else:
        node_cur=TreeNode(char_cur)
        node_cur.leftnode=deserialize(chars)
        node_cur.rightnode=deserialize(chars)
        return node_cur

out=deserialize(list(str_raw))
print(out)

str_out=""
def serialization(tree_in):
    global str_out
    str_out=str_out+tree_in.value
    if tree_in.leftnode:
        serialization(tree_in.leftnode)
    else:
        str_out+="#"
    if tree_in.rightnode:
        serialization(tree_in.rightnode)
    else:
        str_out+="#"
serialization(out)
print(str_out)


文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/43307.html

相关文章

  • 使用JavaScript完成叉树的一些基本操作

    摘要:另外,由于篇幅有限,本篇的重点在于二叉树的常见算法以及实现。常见的二叉树实现代码之前写过相关的文章,是关于如何创建及遍历二叉树的,这里不再赘述。同时我们注意到,在二叉树深度比较大的时候,我们光是比较左右是不够的。 本篇为复习过程中遇到过的总结,同时也给准备面试的同学一份参考。另外,由于篇幅有限,本篇的重点在于二叉树的常见算法以及实现。 常见的二叉树实现代码 之前写过相关的文章,是关于如...

    YPHP 评论0 收藏0
  • 叉树js的生成

    摘要:二叉树的生成二叉树的概念二叉树概念及相关操作本文是顺序二叉树及其操作的实现,非顺序二叉树应该也差不多,这里没有实现基本二叉树的实现添加元素查找元素删除元素具体使用方法 二叉树的js生成 二叉树的概念二叉树概念及相关操作 本文是顺序二叉树及其操作的js实现,非顺序二叉树应该也差不多,这里没有实现 //基本二叉树的实现 function BT(){ this.root=null; ...

    anyway 评论0 收藏0
  • 【从蛋壳到满天飞】JAVA 数据结构解析和算法实现-二分搜索树

    摘要:在数据结构领域对应树结构来说二叉树是最常用的一种树结构,二叉树具有一个唯一的根节点,也就是最上面的节点。二叉树每个节点最多有两个孩子,一个孩子都没有的节点通常称之为叶子节点,二叉树每个节点最多有一个父亲,根节点是没有父亲节点的。 showImg(https://segmentfault.com/img/remote/1460000018597053?w=1832&h=9943); 前言...

    ghnor 评论0 收藏0
  • 【从蛋壳到满天飞】JAVA 数据结构解析和算法实现-二分搜索树

    摘要:在数据结构领域对应树结构来说二叉树是最常用的一种树结构,二叉树具有一个唯一的根节点,也就是最上面的节点。二叉树每个节点最多有两个孩子,一个孩子都没有的节点通常称之为叶子节点,二叉树每个节点最多有一个父亲,根节点是没有父亲节点的。 showImg(https://segmentfault.com/img/remote/1460000018597053?w=1832&h=9943); 前言...

    FuisonDesign 评论0 收藏0
  • Python数据结构——二叉堆的实现

    摘要:二叉堆的有趣之处在于,其逻辑结构上像二叉树,却是用非嵌套的列表来实现。二叉堆结构性质为了更好地实现堆,我们采用二叉树。图完全二叉树有意思的是我们用单个列表就能实现完全树。下列所示的代码是完全二叉堆的实现。 优先队列的二叉堆实现 在前面的章节里我们学习了先进先出(FIFO)的数据结构:队列(Queue)。队列有一种变体叫做优先队列(Priority Queue)。优先队列的出队(Dequ...

    stackfing 评论0 收藏0

发表评论

0条评论

jayce

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<