zoukankan      html  css  js  c++  java
  • 20162317 2017-2018-1 《程序设计与数据结构》第七周学习总结

    20162317 2017-2018-1 《程序设计与数据结构》第七周学习总结

    教材学习内容总结

    • 1、树:非线性集合
    • 2、树中包含的结构以及这些结构的定义
    • 3、树分类的依据
    • 4、遍历树的方法以及分析
    • 5、用链表以及数组实现二叉树

    教材学习中的问题和解决过程

    问题1:先序、中序、后序遍历逻辑上的遍历仍然学不通透,因此下面找三个树图来练习三种遍历方法:

    题目1:

    先序:63-55-42-10-45-58-90-70-67-83-99

    中序:10-42-45-55-58-63-67-70-83-90-99

    后序:10-45-42-58-55-67-83-70-99-90-63

    题目2:

    先序:11-7-3-9-18-16-14-26

    中序:3-7-9-11-14-16-18-26

    后序:3-9-7-14-16-26-18-11

    题目3:

    先序:10-3-2-4-9-11-20-8-13-21

    中序:2-3-4-11-9-20-10-13-8-21

    后序:2-11-20-9-4-3-13-21-8-10

    问题2:有100个结点的完全二叉树,其高度是多少?叶结点数是多少?

    问题2解决方案:

    • 高度:由二叉树的性质可以指导,高度等于[log2n]+1,100个结点的话就可以得到[log2 100]+1,取整计算后得到答案是7。

    • 叶结点:设叶结点的个数为n0度为2的结点数有n2个,则有n0 = n2+1,设完全二叉树中度为1的结点数为n1个,n1为1或0,因此就有n0+n1+n2=100, 得到:n0+n1+n0-1=100, 2*n0 + n1 = 101,从此可看出,n1不能为0,必为1,从而得到2xn0=100,n0=50.所以叶结点有50个。

    问题3:高度为h的完全二叉树至少有多少个结点?至多有多少个结点?

    问题3的解决方案:

    • 至多的结点数:这个比较简单,根据公式:2^h-1即这种情况,即倒数第二层的最后一个结点连着一个叶结点的情况。

    -至少的结点数:倒数第二行第一个结点并没有连着结点即可,即2^(h-1)个结点

    问题4:已经知道一棵度为m的树中有n1个度为1的结点,n2个度为2的结点,...,nm个度为m的结点,问该树中有多少个叶结点?

    问题4的解决方案:根据和同学的讨论以及和网上资料的查阅:

    设n为总结点个数,n0为叶子结点(即度为0的结点个数),则有:
    n=n0+n1+n2+…+nm (1)
    又有(分支总数):n-1=n11+n22+n33+…+nmm (2)
    (因为一个结点对应一个分支)
    式(2)-(1)得:
    1=n0-n2-2n3-…-(m-1)nm
    则有:n0=1+n2+2n3+…+(m-1)nm

    问题5以及解决方案:对二叉树遍历操作的深入思考

    代码托管

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积)
    目标 5000行 15篇 400小时
    第一周 200/200 2/2 20/20
    第二周 20/220 1/3 20/40
    第三周 645/865 1/4 14/54
    第五周 654/1519 1/5 18/72
    第六周 436/1955 1/6 16/88
    第七周 839/2794 2/8 20/108
    • 计划学习时间:18小时

    • 实际学习时间:20小时

    • 改进情况:遇到不会的问题会做一定的深究,要求自身对基础更为扎实。

  • 相关阅读:
    第一阶段冲刺第三天
    C语言printf函数求值顺序
    计算文件的MD5值
    SWFUpload后台取数据
    swfupload的使用方式
    文件上传的几种方式
    自定义缓存
    发邮件
    生成验证码
    将序列化成json格式后日期(毫秒数)转成日期格式
  • 原文地址:https://www.cnblogs.com/VersionP1/p/7699635.html
Copyright © 2011-2022 走看看