yob。

博客作业05--查找

1.学习总结(2分)

1.1查找的思维导图

1.2 查找学习体会

2.PTA实验作业(4分)

2.1 题目1:是否二叉搜索树

2.2 设计思路

定义静态全局变量min存放最小值
if(树为空)
返回 true
else
    将Data值赋给min
    调用递归遍历判断左子树
    若min大于T->Data
    返回 false
    调用递归遍历判断右子树

2.3 代码截图

2.4 PTA提交列表说明。

  • 编译错误因为没有注意字母大小写问题
  • 部分正确是没有将min定义为静态变量,后问同学解决

.题目2:是否二叉搜索树

设计思路(伪代码或流程图)

先定义find函数用于寻找结点是否在树中
LCA函数:
  if(树空或由find查到u、v不在树中)  返回ERROR
  if(T->key等于u或v)  返回T->key
    if(u、v分别在当前节点左右子树) 返回当前节点
    if(u在当前节点右子树)  递归调用 LCA(T->Right,u,v)并返回最终值
    if(u在当前节点左子树)  递归调用LCA(T->Left,u,v)并返回最终值

代码截图

PTA提交列表。

  • 各种可能结果思考不全面

题目3:QQ帐户的申请与登陆

设计思路

  for i=0 to num {
      输入字符串
      若为新用户
         申请账号密码
         已存在该账号时输出ERROR: Exist;
         否则输出New: OK
      旧用户
          输入账号密码
          无该用户时,输出ERROR: Not Exis;
          否则输出Login: OK
          i++ 
		  }

代码截图

PTA提交列表说明。

3.截图本周题目集的PTA最后排名(3分)

本次题目集总分:175分
必做题共:145分

3.1 PTA排名

3.2 我的总分:(2分)

4. 阅读代码(必做,1分)

//---------------------------------------------------------
//红黑树的插入结点
rb_node_t* rb_insert(key_t key, data_t data, rb_node_t* root)
{
    rb_node_t *parent = NULL, *node;
 
    parent = NULL;
    if ((node = rb_search_auxiliary(key, root, &parent)))  //调用rb_search_auxiliary找到插入结

点的地方
    {
        return root;
    }
 
    node = rb_new_node(key, data);  //分配结点
    node->parent = parent;   
    node->left = node->right = NULL;
    node->color = RED;
 
    if (parent)
    {
        if (parent->key > key)
        {
            parent->left = node;
        }
        else
        {
            parent->right = node;
        }
    }
    else
    {
        root = node;
    }
 
    return rb_insert_rebalance(node, root);   //插入结点后,调用rb_insert_rebalance修复红黑树

的性质
}

posted on 2018-05-26 22:37  emmmm。。。  阅读(148)  评论(1编辑  收藏  举报

导航