标签:net 第四周 解决 技术 www. 思路 相同 png 代码调试
public interface BinarySearchTreeADT<T> extends BinaryTreeADT<T>
{
/**
* Adds the specified element to the proper location in this tree.
*
* @param element the element to be added to this tree
*/
public void addElement(T element);
/**
* Removes and returns the specified element from this tree.
*
* @param targetElement the element to be removed from the tree
* @return the element to be removed from the tree
*/
public T removeElement(T targetElement);
/**
* Removes all occurences of the specified element from this tree.
*
* @param targetElement the element to be removed from the tree
*/
public void removeAllOccurrences(T targetElement);
/**
* Removes and returns the smallest element from this tree.
*
* @return the smallest element from the tree.
*/
public T removeMin();
/**
* Removes and returns the largest element from this tree.
*
* @return the largest element from the tree
*/
public T removeMax();
/**
* Returns the smallest element in this tree without removing it.
*
* @return the smallest element in the tree
*/
public T findMin();
/**
* Returns the largest element in this tree without removing it.
*
* @return the largest element in the tree
*/
public T findMax();
}
操作 | 说明 |
---|---|
addElement | 从树中添加一个元素 |
removeElement | 从树中删除一个元素 |
removeAllOccurrences | 从树中删除所指定元素的人和存在 |
removeMin | 删除树中最小元素 |
removeMax | 删除树中最大元素 |
findMin | 返回一个指向树中最小元素的索引 |
findMax | 返回一个指向树中最大元素的索引 |
public T findMax() {
if ( isEmpty() ) {
throw new RuntimeException("树为空");
}
return findMax(root).element;
}
public T findMin()
{
if ( isEmpty() )
{
throw new RuntimeException("树为空");
}
return findMin(root).element;
}
public E removeMax()
{
E ret = maximum();
root = removeMax(root);
return ret;
}
private Node removeMax(Node node)
{
if(node.right == null)
{
Node leftNode = node.left;
node.left = null;
size --;
return leftNode;
}
node.right = removeMax(node.right);
return node;
}
2.添加元素示意图
操作 | 说明 |
---|---|
removefirst | 删除列表的首元素 |
removelast | 删除列表的尾元素 |
remove | 删除列表中的一个特定元素 |
first | 考察列表前端的那个元素 |
last | 考察列表末端的那个元素 |
contains | 判定列表是否含有一个特定的元素 |
is Empty | 判定列表是否为空 |
size | 判定列表中的元素数目 |
public class BinarySearchTreeList<T> extends LinkedBinarySearchTree<T>
implements ListADT<T>, OrderedListADT<T>, Iterable<T>
{
/**
* Creates an empty BinarySearchTreeList.
*/
public BinarySearchTreeList()
{
super();
}
/**
* Adds the given element to this list.
*
* @param element the element to be added to the list
*/
public void add(T element)
{
addElement(element);
}
/**
* Removes and returns the first element from this list.
*
* @return the first element in the list
*/
public T removeFirst()
{
return removeMin();
}
/**
* Removes and returns the last element from this list.
*
* @return the last element from the list
*/
public T removeLast()
{
return removeMax();
}
/**
* Removes and returns the specified element from this list.
*
* @param element the element being sought in the list
* @return the element from the list that matches the target
*/
public T remove(T element)
{
return removeElement(element);
}
/**
* Returns a reference to the first element on this list.
*
* @return a reference to the first element in the list
*/
public T first()
{
return findMin();
}
/**
* Returns a reference to the last element on this list.
*
* @return a reference to the last element in the list
*/
public T last()
{
return findMax();
}
/**
* Returns an iterator for the list.
*
* @return an iterator over the elements in the list
*/
public Iterator<T> iterator()
{
return iteratorInOrder();
}
}
⑤AVL树的右左旋
-- 当某结点的平衡因子>1时,则证明该结点的右孩子过长,在该结点的右孩子的平衡因子却<-1的时候,则此时需要右左旋。
图红黑树元素删除及调整
在进行删除之前需要找到该结点的后继结点来替代图红黑树替代
回答3:1.红黑树的平衡是局部平衡所以平衡时旋转次数要通常比AVL少。2.红黑树在插入失衡最多两次平衡,删除失衡最多三次平衡,效率更高。3.读取比AVL树慢,但是维护更加容易与稳定。
问题1:在编写ppAVL的实现的时候,在关于左旋代码的实现过程中出现空指针问题图
解答1:在进行debug的时候,脑阔疼,实在是看不懂debug的流程,按照书上的意思画了个草图,一步一步对照,后来发现指针的位置由于自己的疏忽给错对象了。改正后图
-图代码
基于评分标准,我给李楠的博客打分:7分。得分情况如下:
正确使用Markdown语法(加1分)
模板中的要素齐全(加1分)
教材学习中的问题和解决过程, (加3分)
代码调试中的问题和解决过程, 无问题
感想,体会真切的(加1分)
点评认真,能指出博客和代码中的问题的(加1分)
看不懂。
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 0/0 | 1/1 | 10/10 | |
第二周 | 0/0 | 1/2 | 10/20 | |
第三周 | 1500/1500 | 1/3 | 10/30 | |
第四周 | 2761/4261 | 2/5 | 25/55 | |
第五周 | 814/5075 | 1/6 | 15/70 | |
第六周 | 1091/6166 | 1/7 | 15/85 | |
第七周 | 1118/7284 | 1/8 | 15/100 |
20172333 2018-2019-1 《程序设计与数据结构》第七周学习总结
标签:net 第四周 解决 技术 www. 思路 相同 png 代码调试
原文地址:https://www.cnblogs.com/yanyujun527/p/9892137.html