我有一个项目,需要在MIPS中创建一个二进制搜索树。我已经用C很好地理解了,但是MIPS是我迷路的地方。我的教授已包含此代码以与插入方法一起使用。我对addNodeToTree和addNode之间的区别感到困惑:
# add a node to tree
#
# input: $a0 the address of the tree
# $a1 the value you want to add to the tree
addNodeToTree :
subu $sp, $sp, 4 # adjust the stack pointer
sw $ra, 0($sp) # save the return address on stack
subu $sp, $sp, 4 # adjust the stack pointer
sw $a0, 0($sp) # save the parameter
lw $a0, 0($a0) # addNode(bTree->root);
jal addNode
lw $a0, 0($sp) # get the parameter
addu $sp, $sp, 4 # adjust the stack pointer
lw $ra, 0($sp) # get the return address
addu $sp, $sp, 4 # adjust the stack pointer
jr $ra
# please implement this method
#
# add a node to tree
#
# input: $a0 the address of the root node
# $a1 the value you want to add to the tree
#
# hint: you need to write a recursive call here
addNode :
jr $ra # to return
答案 0 :(得分:0)
在给定的代码中,addNodeToTree是您在实际将节点插入树之前进行准备的地方。用c表示,可以表示如下:
void addNodeToTree(struct BinaryTree btree, int newValue){
struct Node root = btree->root;
addNode(root, newValue);
}
void addNode(struct Node root, int newValue){
//please implement this method
}
可以在根节点的结构BinaryTree地址中,当前深度等位置保存在结构节点中;可以保留左子节点,右子节点和父节点等。
此处给出的实际任务是实现addNode,在该节点上您的根地址在$ a0上,而newValue本身在$ a1中。因此,当main或任何其他函数中的某处调用带有binaryTree的地址(不是根的地址)和一个值的addNodeToTree时,addNodeToTree可以准备参数并调用addNode函数来完成实际工作。