Count Complete Tree Nodes
Real-world version: Counting the Chute JunctionsThe statement here is our own: the same inputs, outputs and technique.
A mail room sorts parcels through a chute that splits in two at every junction. The chute is built to a strict pattern: counting the top junction as level 0, every level except the deepest one is filled with junctions, and on the deepest level the junctions are packed against the left with nothing to the right of them.
The layout comes to you as layout, a slot listing padded out to a full triangle. If the chute has h levels then layout has exactly 2^h - 1 slots. Slot 0 holds the top junction, and for any slot i the two slots below it are 2*i + 1 and 2*i + 2. A slot holding a number carries a junction, and that number is the junction's stencilled label. A slot holding null is empty. When the chute has no junctions at all, layout is empty.
Return how many junctions the chute has.
Labels carry no information about position and may repeat, and a junction may be labelled 0. Aim to answer in a number of steps that grows with the square of the level count rather than with the junction count, so reading every slot is more work than the pattern demands.
Examples
Example 1
- Input
- layout = [1, 2, 3, 4, 5, null, null]
- Output
- 5
The listing is padded to seven slots for a three-level chute. Slots 0 through 4 carry junctions and the last two are empty.
Example 2
- Input
- layout = [1, 2, 3, 4, 5, 6, 7]
- Output
- 7
Every slot of this three-level listing carries a junction, and the deepest level is full.
Example 3
- Input
- layout = [7]
- Output
- 1
A single level with a single slot, so the chute has one junction, stencilled 7.
Example 4
- Input
- layout = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, null, null, null]
- Output
- 12
Four levels, so the listing is padded to fifteen slots. Twelve of them carry junctions, packed against the left of the deepest level.
Example 5
- Input
- layout = [0, 0, 0, 0, 0, 0, null]
- Output
- 6
Six of the seven slots carry junctions, every one of them stencilled 0, and only the final slot is empty.
Constraints
- The number of junctions is in the range [0, 5 * 10^4].
- 0 <= junction label <= 5 * 10^4
- layout.length == 0 when there are no junctions, otherwise layout.length == 2^h - 1 for the chute's level count h.
- The chute always follows the pattern: only the deepest level may be short, and it is packed to the left.
The signature
The editor starts with this. It matches the parent problem's shape, so a solution that works here works on a standard judge unchanged.
def count_nodes(layout: list[int | None]) -> int:public int countNodes(Integer[] layout)Checking your plan…
How this problem was checked
- Passed: Reference solution run against 25 test cases: 25 passed
- Passed: 5 worked examples confirmed by running the code
- Passed: 0 eight-word sequences shared with the parent problem's text
- Passed: Agrees with an independent brute-force solution on random inputs
- Passed: Test set shown to catch deliberately broken solutions
- Passed: Reviewed by a separate quality pass
- Passed: Function arity matches the parent problem's