将字符串转换为树

时间:2016-11-24 13:04:44

标签: python string tree

我想根据Python的字符串字典顺序将给定的字符串转换为树,作为顺序字符串,其中每个单词将与下一个单词(根不包括)进行比较。也就是说,如果比较w,则在节点[lefttree,righttree,word]的左子树中插入或搜索单词w

strings will be like this :
string = "sad adsa dqwe fdsf erwa"

到目前为止我没有做任何事情,但我有一个想法,即通过拆分给定的字符串 string.split ,将第一个单词指定为根,并且对于下一个单词,递归检查条件返回True。

1 个答案:

答案 0 :(得分:1)

如果我准确理解你的目标,你所需要的只是字符串的二进制搜索树(BST)。 树的每个# Works in Jupyter with Python 2 Kernel. %matplotlib inline import seaborn as sns import matplotlib as mpl import matplotlib.pyplot as plt tips = sns.load_dataset("tips") # Borrowed from http://stackoverflow.com/a/31385996/4099925 def hexbin(x, y, color, max_series=None, min_series=None, **kwargs): cmap = sns.light_palette(color, as_cmap=True) ax = plt.gca() xmin, xmax = min_series[x.name], max_series[x.name] ymin, ymax = min_series[y.name], max_series[y.name] plt.hexbin(x, y, gridsize=15, cmap=cmap, extent=[xmin, xmax, ymin, ymax], **kwargs) g = sns.PairGrid(tips, hue='sex') g.map_diag(plt.hist) g.map_lower(plt.scatter, alpha=0.5) g.map_upper(hexbin, min_series=tips.min(), max_series=tips.max(), alpha=0.5) 都是以下格式的列表列表:Node。空列表将表示空指针

让我们实现简单的递归过程,根据字典顺序插入新值(这是Python中字符串的默认比较顺序)。

[left_sub_tree, right_sub_tree, word]

现在,您可以为您的字符串创建一个BST:

def insert(x, word):
    if len(x) == 0:
        return [[], [], word]
    if word < x[2]:
        x[0] = insert(x[0], word)
    elif x[2] < word:
        x[1] = insert(x[1], word)
    return x

查看结构的最简单方法是按级别打印树级别:

tree = []
for w in string.split():
    tree = insert(tree, w)

FYI。上述过程执行所谓的“有序”遍历。