20162328 2017-2018-1 《程序设计与数据结构》第7周学习总结
教材学习内容总结
树是非线性结构,其元素组织为一个层次结构。
树的度表示树种任意节点的最大子节点数。
有m个元素的平衡n叉树的高度是logn^m.
树的遍历有4 种方法。
进行层次遍历时可用队列来储存树中的元素。
使用数组实现二叉树时,位于位置n的元素的左孩子在(2
n+1)的位置,其右孩子在(2*(n+1))的位置。
树的基于数组的储存链实现方法可以占据数组中的连续位置,不管树是不是完全树。
如何在一般二叉树中添加及删除元素,要取决于树的用途。
使用决策树可以设计专家系统。
二叉查找树是一棵二叉树,对于其中的每一个点,左子树上的元素的小于父结点的值,而右子树啥漫画的元素大于等于父结点的值。
最有效的二叉树查找树是平衡的,所以每次比较是可以排除一半的元素。
如果没有其他操作,二叉查找树的树形有元素的添加次序来决定 。
当从二叉查找树中删除元素时要考虑三种情形,其中的两种比较简单。
情形1 如果被删结点是叶节点,可以简单的删除。
情形2 如果被删结点有一个子节点,则用他的子节点替代他。
如果被删节点有两个子节点,再输的更低层找到一个合适的节点替代它。别删节点的子节点成为替代节点的子节点。
当从二叉查找树中删除有两个子结点的结点时,比较好的办法是用它的中序后继来取代它。
可以对二叉查找树进行旋转以恢复平衡。
教材学习中的问题和解决过程
在实现LinkedBinaryTree时不理解调用的Iterator类,产看了JDK还是不懂迭代器的概念
解决方法
使用ArrayList类来代替Iterator类