二分探索木を順番にトラバースし、(ソートされた) データを配列に配置しようとしています。何らかの理由で、配列内の現在の位置へのポインターが右に移動していません。
これは DS の宣言です。
TreeRoot DWORD Null (left child)
DWORD Null (right child)
SDWORD 6 (numeric value)
そして、これは私が書こうとしている関数です:
TreeToArray PROC
rootPtr=8;
ArrayPtr=rootPtr+4;
;Saving the Registers
push ebp;
mov ebp,esp;
push esi;
push edx;
push ebx;
push edi;
push ecx;
Check:
mov esi,rootPtr[ebp]; esi holds the current root
mov edi, ArrayPtr[ebp] ;edi holds the pointer to the array
cmp esi,Null ;if root=null
je Done2;
LeftSubTree:
push edi
push BinTreeLeft[esi]
call TreeToArray; recursive call for left sub tree
Visit:
mov ebx,BinTreeValue[esi] ;getting the value of the node
mov [edi],ebx
add edi,4
RightSubTree:
push edi
push BinTreeRight[esi]
call TreeToArray; recursive call for right sub tree
Done2:
pop ecx;
pop edi;
pop ebx
pop edx
pop esi
pop ebp
ret 8;
TreeToArray ENDP