第二次实验报告
第二次实验报告
第一项
问题分析
- contains 方法编写:主要模仿课本中已经给出的find方法,通过find方法查找是否能找到某个值,来判定是否contains某个值
- preorder和postorder方法的编写: 调换顺序即可
测试截图:
第二项
问题分析: 核心问题就是通过编写一个公式(通过先序遍历和中序遍历的数据)来建造一个唯一二叉树模型。
- 刚开始的想法:通过不断实例化LinkedBinaryTree类来建造,尝试后发现过于麻烦就放弃了
- 之后利用了决策树代码的模板,通过事先计算后得出的二叉树模型来建立唯一二叉树
再回到问题上面发现是我的理解出现了问题,于是继续寻找解决方案 - 遇到了曙光:上网查找公式代码(TreeNode root = CreatTree(preorder, inorder)😉,理解修改后
- 核心代码分析和测试结果
第三项
问题分析:决策树的优势在于通过判断N/Y来决定下一段是识别左子树还是右子树,从而到达不同的结果,本项目重点在于研究逻辑问题。
-效果图
第四项
问题分析: 本问题的关键在于如何建立利用树来解决后缀表达式计算的架构模型
-
定义了两个数组,一个数组存放数字,一个数组存放符号。
-
先取出数字,当读取到符号时先计算,计算后的结果再存放入存放数字的数组,一直重复操作
第五项
问题分析:查找树的特点就是左子树上的元素永远小于父结点的值,而右结点上的元素大于或者等于父结点上的值,利用这一特点,就能很容易写出
第六项
TreeSet的API
boolean add(E object)
boolean addAll(Collection<? extends E> collection)
void clear()
Object clone()
boolean contains(Object object)
E first()
boolean isEmpty()
E last()
E pollFirst()
E pollLast()
E lower(E e)
E floor(E e)
E ceiling(E e)
E higher(E e)
boolean remove(Object object)
int size()
Comparator<? super E> comparator()
Iterator<E> iterator()
Iterator<E> descendingIterator()
SortedSet<E> headSet(E end)
NavigableSet<E> descendingSet()
NavigableSet<E> headSet(E end, boolean endInclusive)
SortedSet<E> subSet(E start, E end)
NavigableSet<E> subSet(E start, boolean startInclusive, E end, boolean endInclusive)
NavigableSet<E> tailSet(E start, boolean startInclusive)
SortedSet<E> tailSet(E start)
- TreeSet实际上是TreeMap实现的。当我们构造TreeSet时;若使用不带参数的构造函数,则TreeSet的使用自然比较器;若用户需要使用自定义的比较器,则需要使用带比较器的参数。
- TreeSet是非线程安全的。
- TreeSet实现java.io.Serializable的方式。当写入到输出流时,依次写入“比较器、容量、全部元素”;当读出输入流时,再依次读取。
- TreeSet不支持快速随机遍历,只能通过迭代器进行遍历!