我编写了一个构建二叉树的代码,它构建如下:
[[[[discrete,68]],[linear,78],[[[[calculas1,78]],[physics1,80],[]],[physics2,90],[]]]]
但是我面临的问题是,当我想在树上搜索时,我找不到树的标题!
答案 0 :(得分:1)
缩进数据,更改一些括号以区分数据条目与其余条目,
[ [ [ (discrete,68) ],
(linear,78),
[ [ [ (calculas1,78) ],
(physics1,80),
[] ],
(physics2,90),
[]]]]
看起来它满足
tree_list( [X] ):- tree(X).
tree( [] ). % an empty tree
tree( [ (Key, Value) ] ). % a leaf
tree( [ L, (Key, Value), R] ):- % a branch
tree(L), tree(R).
因此,您的数据列表不是树,它是一个树的列表,即
(linear,78)
/ \
(discrete,68) (physics2,90)
/ \
(physics1,80) EMPTY
/ \
(calculas1,78) EMPTY
树根的含义可能是
root( Tree, Root):- Tree=[Root], tree(Tree). % a leaf
root( Tree, Root):- Tree=[Left, Root, Right], tree(Tree). % a branch
对于您的数据,您可以通过
获取get_root(Data,Root):- Data=[Tree], root(Tree, Root).