如何在neo4j中找到从根到最大叶的树深度
我想找到树的深度 我已经找到了这个解决方案,但我不知道它是否适用于所有情况:如何在neo4j中找到从根到最大叶的树深度,neo4j,cypher,Neo4j,Cypher,我想找到树的深度 我已经找到了这个解决方案,但我不知道它是否适用于所有情况: MATCH p=(parent)-[:RELATES*]->(child) WHERE id(parent) = 30 RETURN p ORDER BY length(p) DESC limit 1 这给了我最长的路,但是 第一:我不知道它是否总是有效的。 其次:我希望输出是深度的数字,而不是列表本身。此查询应该可以: MATCH p=(parent)-[:RELATES*]->(child) WHER
MATCH p=(parent)-[:RELATES*]->(child)
WHERE id(parent) = 30
RETURN p
ORDER BY length(p) DESC
limit 1
这给了我最长的路,但是
第一:我不知道它是否总是有效的。
其次:我希望输出是深度的数字,而不是列表本身。此查询应该可以:
MATCH p=(parent)-[:RELATES*]->(child)
WHERE ID(parent) = 30 AND NOT (child)-[:RELATES]>()
RETURN LENGTH(p) AS maxLth
ORDER BY maxLth DESC
LIMIT 1
虽然不是严格必要的,但它只考虑
子对象
是叶子的路径。正如@cybersam所提到的,并进行了一些调整:
MATCH p=(parent)-[:RELATES*]->(child)
WHERE ID(parent) = 30 AND NOT (child)-[:RELATES]>()
RETURN LENGTH(p) + 1 AS maxLth
ORDER BY maxLth DESC
LIMIT 1
在标准树理论术语中,树的“深度”是由边的数量决定的,而不是顶点的数量。从技术上讲,这实际上是计算“深度”加1。