二进制搜索树MIPS混乱

时间:2019-11-26 21:30:11

标签: binary binary-search-tree mips

我有一个项目,需要在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

1 个答案:

答案 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函数来完成实际工作。