博客作业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修复红黑树
的性质
}