我想在 HCS12 微控制器汇编语言中插入二叉搜索树。我首先得到这些值,它们位于某些地址中。例如; 让我假设给出的数字分别是 5-3-8-9-1。让我假设我们从第 300 个地址开始。因此数字的地址是301,302,303,304,305;分别。根据这个二叉搜索树;我们可以理解,5 是根,3 是 5 的左孩子,8 是 5 的右孩子,9 是 9 的右孩子,1 是 1 的左孩子。这是结果对应的树。5 / \ 3 8 / \ 1 9
现在,我想编写一个汇编代码来存储其 eft 和 right 孩子的地址的值。我的程序的结果应该将以下输出写入内存:(第一个值)(其左孩子的地址)(其右孩子的地址)(第二个值)(其左孩子的地址)(其右孩子的地址) …………
因此,据此;程序应将以下输出写入内存中的某处:
05 03 02 03 03 03 03 04 00 00 08 00 00 03 05 09 00 00 00 00 01 00 00 00 00 ===> 00 00 表示没有左孩子或右孩子。
这是我第一次尝试编写它的汇编代码:
ORG $300
DC.B 05,03,08,09,01 ; Here we get the values and store them in memory adresses from 301 to 305
Entry:
LDS #$500
LDX #$301
LDAA 0,X
STAA $401
CreateTree:
LDAA [0,X]
LDAB [1,X]
CBA
BCS WriteLeftChild
BSR writeRightChild
writeLeftChild:
CMPB #$00
BEQ Exit
LDAA [1,X]
STAA 5,X
Increment ??
BSR CreateTree
writeRightChild:
CMPB #$00
BEQ Exit
LDAA [1,X]
STAA 10,X
Increment ??
BSR CreateTree
Exit:
RTS
谁能帮我解决这个算法?谢谢