数据结构与算法MOOC习题解题报告(PART 1:第6课-第8课)与PART 1总结

数算MOOC习题解题报告(PART 1:第6课-第8课)

第6课 二叉树II(Binary Trees II)(3题)

1.Huffman coding tree

这就是著名的Huffman编码算法,具体做法是找出最小的两个结点求和为一个结点,代价内累加这一结点价值。反复这一过程即可,如果用优先队列或堆实现这一算法十分迅速,因为只要找到最小结点,并且需要插入维护有序。但是本题数据很小,做一遍找一遍O(n)的复杂度也能接受。

2.Binary search tree

经典数据结构二叉搜索树,以链表实现二叉树,主要有插入,查找,删除操作。
查找其实原理比较简单,用二叉搜索树左边小于父结点,右边大于父结点性质即可。
插入的方法类似于查找,找到应该的位置后直接插入即可,如果已经有了就不插入。
而删除操作相对困难,不过本题不要求。大致原理是看有无左树,没有左树则删除该结点。右树代替该结点。如果有左树则用左树代替该结点,右数挂在左树中最大元素的右边即可。原理学习了,实现起来有些困难,由于指针操作十分容易出内存错误,一直调试不对,希望以后学习熟练了能写对,先掌握思想有个印象。

3.Expression Expression tree Expression evaluation

中缀表达式与后缀表达式互换,还要注意层次的细节,留待攻坚。

第7课 树与森林(Trees and Forest)(3题)

1.Level-order sequence with degree

本题没想到什么好的方法,直接用数组模拟储存树,然后再模拟推演找到子结点,也许预处理能快一点,但是数据非常小,也就没有优化了。

2.Specular reflection of a tree

注意树与二叉树互化中很重要的一点,转化后的二叉树左子树实际深度比父节点大一,而右子树实际深度与父节点一样。本题既然给出了二叉树结构,那么可以计算出每一个点的实际深度,再结合出现次序,可以给出实际树的bfs遍历结果。

3.食物链

综合题,留待百练练习。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值