# Subtree
Subtree building algorithm works for a sorted finite list of items.
For each two items we define a `dif` value which is `dif(a, b) = (a ^ b).leading_zeros()`. For any sorted numbers `[a, b, c]`
`dif(a, b)` is never equal `dif(b, c)`.
## Example
```
00010010 00110101 00111000 01010001 01101000 01101100 10000111 10001011 10101010 10101011 10110111 11000010 11011110 11101000 11110110 11111011
```
- :
- 0:
- 00:
- 00010010
- 0011:
- 00110101
- 00111000
- 01:
- 01010001
- 01101:
- 01101000
- 01101100
- 1:
- 10:
- 1000:
- 10000111
- 10001011
- 101:
- 1010101:
- 10101010
- 10101011
- 10110111
- 11:
- 110:
- 11000010
- 11011110
- 111:
- 11101000
- 1111:
- 11110110
- 11111011
Subtree:
```
2 4 1 2 5 0 4 2 7 3 1 3 2 3 4
00010010 00110101 00111000 01010001 01101000 01101100 10000111 10001011 10101010 10101011 10110111 11000010 11011110 11101000 11110110 11111011
| X | | X | X | X | | X | | X
X | X | | X | | X
X | X | X
| X
X
```
## Deletion
Delete # 6.
```
2 4 1 2 5 0 2 7 3 1 3 2 3 4
00010010 00110101 00111000 01010001 01101000 01101100 10001011 10101010 10101011 10110111 11000010 11011110 11101000 11110110 11111011
| X | | X | | X | | X | | X
X | X | | X | | X
X | U | X
| U
U
```
Delete # 2.
```
2 1 2 5 0 2 7 3 1 3 2 3 4
00010010 00110101 01010001 01101000 01101100 10001011 10101010 10101011 10110111 11000010 11011110 11101000 11110110 11111011
U | | X | | X | | X | | X
| X | | X | | X
U | X | X
| X
U
```
Delete # 13.
```
2 1 2 5 0 2 7 3 1 3 2 3
00010010 00110101 01010001 01101000 01101100 10001011 10101010 10101011 10110111 11000010 11011110 11101000 11110110
X | | X | | X | | X | U
| X | | X | U
X | X |
| U
U
```
Delete # 4.
```
2 1 2 0 2 7 3 1 3 2 3
00010010 00110101 01010001 01101000 10001011 10101010 10101011 10110111 11000010 11011110 11101000 11110110
X | | | | X | | X | X
| U | | X | X
U | X |
| X
U
```
Delete # 10.
```
2 1 2 0 2 7 3 1 3 2
00010010 00110101 01010001 01101000 10001011 10101010 10101011 10110111 11000010 11011110 11110110
X | | | | X | | X |
| X | | X | U
X | X |
| U
U
```
Delete # 2.
```
2 1 0 2 7 3 1 3 2
00010010 00110101 01101000 10001011 10101010 10101011 10110111 11000010 11011110 11110110
X | | | X | | X |
U | | X | X
| X |
| X
U
```
Delete # 5.
```
2 1 0 2 3 1 3 2
00010010 00110101 01101000 10001011 10101010 10110111 11000010 11011110 11110110
X | | | U | X |
X | U | X
| U
U
```
Delete # 8.
```
2 1 0 2 3 1 3
00010010 00110101 01101000 10001011 10101010 10110111 11000010 11011110
X | | | X | X
X | X |
| U
U
```
Delete # 3.
```
2 1 0 3 1 3
00010010 00110101 01101000 10101010 10110111 11000010 11011110
X | | X | X
X | U
U
```
Delete # 0.
```
1 0 3 1 3
00110101 01101000 10101010 10110111 11000010 11011110
U | X | X
| X
U
```
Delete # 4.
```
1 0 3 1
00110101 01101000 10101010 10110111 11011110
X | X |
| U
U
```
Delete # 2.
```
1 0 1
00110101 01101000 10110111 11011110
X | U
U
```
Delete # 3.
```
1 0
00110101 01101000 10110111
X |
U
```
Delete # 0.
```
0
01101000 10110111
U
```