Description
Select strict descendants in source order, not traversal order, and exclude the queried node.
A parent-record forest represents each node by an exact string ID and a parent ID or null for a root. Depth counts edges toward a root; subtree height counts edges toward the deepest descendant. Node order, identity, cycles and missing references are separate properties that must be checked before structural transformations.
Select strict descendants in source order, not traversal order, and exclude the queried node.
When to use this tool
Use this tool to select strict descendants in source order, not traversal order, and exclude the queried node.
How to use the tool and how it works
- Enter parentsJson, id using the definitions below. Serialize JSON text fields in the decoded shape shown below.
- Run the operation. Resolve input-format errors before interpreting an output.
- Read result.descendants, using the stated boundary, ordering, sign and absence conventions.
Validate a complete forest and requested ID. Select all other nodes whose ancestor chain contains that ID, preserving original record order.1
| Input field | Meaning and units | Accepted input |
|---|---|---|
| parentsJson | JSON array of {id,parent} records. id is an exact string; parent is another exact ID or null for a root. | Text, at most 8,192 UTF-16 code units; narrower grammar/range rules also apply. |
| id | Existing node ID whose relatives or subtree are requested. | Text, at most 8,192 UTF-16 code units; narrower grammar/range rules also apply. |
These decoded structures show the examples inside JSON text fields. Supply their serialized JSON strings as input.
{
"parentsJson": [
{
"id": "a",
"parent": null
},
{
"id": "b",
"parent": "a"
},
{
"id": "c",
"parent": "a"
},
{
"id": "d",
"parent": "b"
}
]
} | Output field | Interpretation |
|---|---|
| result | Object containing the fields below. |
| result.descendants | Proper descendant IDs in original record order, excluding self. |
{
"input": {
"parentsJson": "[{\"id\": \"a\", \"parent\": null}, {\"id\": \"b\", \"parent\": \"a\"}, {\"id\": \"c\", \"parent\": \"a\"}, {\"id\": \"d\", \"parent\": \"b\"}]",
"id": "a"
},
"output": {
"result": {
"descendants": [
"b",
"c",
"d"
]
}
}
} Limitations and assumptions
- The requested node itself is excluded; output is not automatically preorder or breadth-first order.
- Structural operations require distinct node IDs, existing non-null parent IDs and no parent cycles; audit tools explicitly state when they accept incomplete structure. Multiple roots are allowed. Matching is exact and case-sensitive.
- Every declared outer field is required and unknown outer fields are rejected. Strings and JSON text have size limits, lists are bounded to 128 entries, and JSON nesting/node counts are bounded. Tighter operation-specific bounds stated above take precedence.
- Ordinary numeric outputs must be finite and within safe-integer magnitude. Exact large lengths/counts use decimal strings. Original record indexes and code-unit positions are zero-based; span ends are exclusive unless stated otherwise.
Alternative or Complementary methods
Use identity and cycle audits to inspect incomplete records, then structural operations on complete forests. Preserve sibling order explicitly when exchanging traversal results with another tree format.
References
Similar or alternative tools
- Parent Forest Leaf Inventory
Explicit complete acyclic parent forests with exact unique string node IDs and null roots; select nodes with no direct children, including isolated component roots.
- Parent Forest Root Inventory
Explicit complete acyclic parent forests with exact unique string node IDs and null roots; inventory declared roots in source order without inferring dangling references as roots.