Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
The previous implementation could give an incorrect result when the first node was not a root node. Example: P2D 0 2 2 correctly returns: 0 1 0 0 2 1 However P2D 1 1 returns 1 0 0 1 Therefore, it says that no permutation is necessary to have the depth-first traversal. The reason is that, in the matrix `(-1+d)↑⍤0 1⊢⌽z`, a zero can either mean the index of a node or an element used to fill the empty positions. In the last example, `(-1+d)↑⍤0 1⊢⌽z` is: 1 0 <- path of the node is 1 0 1 0 <- path of the node is 1 Grade Up says that rows of this matrix are already sorted. A quick fix is just to add one to the matrix z. Therefore, we have instead `(-1+d)↑⍤0 1⊢⌽1+z)` which is in our example: 2 1 2 0 And we have the expected result: >> P2D 1 1 1 0 1 0 Notes: - There are no issue when the first node is a root node. - There is no issue when `⎕IO` is equal to 1. Actually, the value we need to add to z is `1 - ⎕IO`, if we wanted a solution that works for any value of `⎕IO`.
- Loading branch information