20172318 2018-2019-1 《程序设计与数据结构》第6周学习总结
20172318 2018-2019-1 《程序设计与数据结构》第6周学习总结
教材学习内容总结
树
- tree:树 树是一种非线性结构,其元素是按分层组织的。
- 一种可能的计算策略是将元素n的左孩子置于位置(2×n+1),将右孩子置于位置(2x(n+1))

- node:结点 树中的一个位置。
- edge:边 树中两个结点的链接。
- root:根结点 位于树中最高层的结点,在该树中,该结点没有父结点。
- level:层结点 至关.于树的根结点的位置。
- child:子结点 位于树中当前结点下面的结点,并由边与之直接链接。
- sibling:同胞结点 属于同一结点的子结点。
- leaf:叶结点 树中再也不有任何告终点的结点。
- internalnode:内部结点 树中的结点,它不是根结点,且至少有一个子结点。
- path:路径 链接树中一个结点与另外一个结点的边的集合。
- ancestor:祖先结点 位于当前结点以上的结点。
- descendant:后代结点 位于当前结点一下的结点。
- pathlength,路径长度 链接一个结点与另外一个结点的边的数量。
- treeheight:树高度 从根结点到叶结点的最长路径的长度。
- 通常而言一棵含有m个元素的平衡n元树具备的高度为lognm
- treeorder:树的阶 树中结点具备的最大子结点数。
- generaltree:通常树 对结点的子结点数没有限制的树。
- n-arytree:n元树 结点的子结点数很少于n的树。
- binarytree:二叉树 结点的子结点数很少于2的树。
- balanced:平衡 粗略地说,若是全部叶结点都位于同一层,或至少位于其余某一层,就认为是平衡树。
- complete:彻底 若是是平衡树,且最底层的叶结点位于树的左边,就认为是彻底树。
- full:完整 若是树的全部叶结点位于同一层,且每一个结点要么是叶结点,要么正好有n个子结点,那么就认为这种n元树是完整树。
- freelist:在树的数组实现中,可用位置的列表。
- binarysearchtree:二叉查找树 左子结点老是小于父结点,而父结点又老是小于或等于右子结点,那么这种二叉树就是二叉查找树。
- preordertraversal:前序遍历 从根结点廾始,访问每一结点及其孩了的树遍历。
- inordertraversal:中序遍历 从根结点开始,访问结点的左子结点,再是该结点,而后是其他结点的树遍历。
- postordertraversal:后序遍历 从根结点开始,先访问孩子结点,而后访问每一结点的树遍历。
- level-ordertraversal:层序遍历 从根结点开始,每次访问同一层中的全部结点的树遍历。
- 用链表实现二叉树
- BinaryTreeNode类。该类负责跟踪存储在每一个位置上的元素,以及指向每一个结点的左右子树或孩子的指针。
- find方法。与前面集合中的同样,find方法经过使用存储在树中的类的equals方法来断定等同性,来遍历该树。这就将等同性的定义置于了存储在树中的那个类的控制之下。若是没有找到目标元素,那么find方法将抛出一个异常。
- iteratorlnOrder方法。其任务是建立一个Iterator对象,它容许一个用户类在中序遍历中单步遍历树的元素。该问题的解决方案给咱们提供了使用一个集合来构建另外一个集合的另外一例子。咱们仅仅经过使用前面伪代码中的一个visit定义来遍历该树,该伪代码将结点的内容添加到了某个无序列表中。而后,做为该树的iterator方法的结果,返回该列表迭代器。
教材学习中的问题和解决过程
- 问题1:如何将一棵树转化为对应的二叉树?
- 问题1解决方案:
将 节点的孩子 放在左子树;html
将 节点的兄弟 放在右子树。node


代码调试中的问题和解决过程
无git
上周考试错题总结
上周无测试数组

点评过的同窗博客和代码
学习进度条
目标 |
5000行 |
30篇 |
400小时 |
|
第一周 |
0/0 |
1/1 |
8/8 |
|
第二周 |
500/500 |
1/2 |
15/ 23 |
|
第三周 |
802/1302 |
1/3 |
12/35 |
|
第四周 |
1530/2832 |
2/5 |
15/50 |
|
第五周 |
1165/3997 |
1/6 |
10/60 |
|
第六周 |
1169/5166 |
1/7 |
15/75 |
|
参考资料
欢迎关注本站公众号,获取更多信息