아래에있는 것과 같은 이진 트리가 배열에 저장되어야한다고 가정합니다.배열에 이진 트리 저장
7
/\
1 10
/\
9 11
그리고 어레이의 노드를 저장하는 식 인덱스 i
에서의 모든 노드에 대해 다음 위치 0에 루트 노드를 저장하고, 시작 것으로는, 그 아이가 인덱스 (i*2)+1 and (i*2)+2
에 배치된다. 두 자식 중 하나의 인덱스가 array.length - 1
보다 큰 경우 해당 노드에는 하위 노드가 없습니다.
그래서 나는 다음 위치 I2 + 1, I2 + 2에서 그 아이 1 (10)가 1, 2 될 것이라고, 위치 0에서 7을 넣어 시작 :
|7|1|10| | | |
0 1 2 3 4 5
을 지금, 나는이와 붙어있어 자식 노드가없는 노드 1. 자녀로서 무엇을 집어 넣어야합니까?
인가 그것과 같이, 예 -1를 들어, 노드의 부재를 표현 할 몇 가지 기본 값을 넣어 OK : 이|7|1|10|-1|-1|9|11|
0 1 2 3 4 5 6 7
나는 왜 아이들에 대해 걱정해야하는지 잘 모르겠습니다. 트리 빌더가 균형을 유지할 때 트리에 다시 넣으려는 경우 배열의 트리에있는 숫자 만 놓으면 안됩니다. –
좋은 질문입니다. 내가 너라면, -999999를 그냥 null로 보일거야. –
왜 그 중 하나가 *이고 다른 것이 + 인가? (i * 2) +1 및 (i + 2) +2 –