相关疑难解决方法(0)

漂亮打印一棵树

假设我有一个如下定义的二叉树数据结构

type 'a tree =
    | Node of 'a tree * 'a * 'a tree
    | Nil
Run Code Online (Sandbox Code Playgroud)

我有一个树的实例如下:

let x =
  Node
    (Node (Node (Nil,35,Node (Nil,40,Nil)),48,Node (Nil,52,Node (Nil,53,Nil))),
     80,Node (Node (Nil,82,Node (Nil,83,Nil)),92,Node (Nil,98,Nil)))
Run Code Online (Sandbox Code Playgroud)

我正在尝试将树打印成易于理解的东西.最好,我想在控制台窗口中打印树,如下所示:

        _______ 80 _______
       /                  \
    _ 48 _              _ 92 _
   /      \            /      \
 35       52         82       98
   \       \        /
    40      53    83
Run Code Online (Sandbox Code Playgroud)

有什么方法可以让我的树以这种格式输出?

f# pretty-print

29
推荐指数
1
解决办法
6723
查看次数

以ASCII格式显示树

作为一个时间传递活动,我决定在python中实现一个Tree(like)结构.
我实现了一个Node类(这里仅用于此目的),如下所示:

class Node:
    def __init__(self, name, parent, *data):
        self.name = name
        self.parent = parent
        self.data = data
        self.children = []
        self.is_root = False

    def __repr__(self):
        return 'Node '+repr(self.name)

    def dic(self):
        retval = {self:[]}
        for i in self.children:
            retval[self].append(i.dic())
        return retval

    def display(self): # Here
        pass

    def has_children(self):
        return bool(self.children)

    def get_parent(self):
        return self.parent

    def add_child(self, name, *data):
        child = Node(name, self,*data)
        self.children.append(child)
        return child
Run Code Online (Sandbox Code Playgroud)

如您所见,该display功能未实现.
这是一个示例树.

A = Node('A',Node)
A.is_root = True
B …
Run Code Online (Sandbox Code Playgroud)

python tree

7
推荐指数
1
解决办法
6684
查看次数

标签 统计

f# ×1

pretty-print ×1

python ×1

tree ×1