
数据结构与算法
贝西晨
It's time.
展开
-
幂运算求解(高效率)
运行时间由线性O(N)到对数O(logN) 如果幂为偶数,XN=XN/2 *XN/2, 如果幂为奇数,XN=X(N-1)/2 *X(N-1)/2 *X,如:X62求解只用9次乘法 X3=X2*X,X7=(X3)2*X, … X62=(X31 )2 static long myPow(long x, int n) { if (n == 0) {原创 2017-10-06 21:46:26 · 1391 阅读 · 0 评论 -
二叉查找树的各种操作(插入、删除、查找、遍历)
二叉查找树主要的特点:当前节点左边的所有节点要小于该节点,右边的要大于该节点。(不能只判断当前节点的左儿子和右儿子是否小于或大于当前节点)下面是对二叉查找树的各种操作列表 1. 插入(递归、非递归) 2. 删除 3. 查找最小值、最大值 4. 先序遍历(递归,非递归) 5. 中序遍历(递归,非递归) 6. 后序遍历(递归,非递归) 7. 层次遍历 8. 检查二叉树是否原创 2017-12-03 10:50:39 · 343 阅读 · 0 评论 -
栈和队列的基本实现(数组实现和链表实现)
基本知识: 队列:先进先出。场景:排队购票 栈:先进后出。 场景:邮箱对栈和队列的基本操作,通过数组和链表进行实现import java.util.LinkedList;/** * * @author */class Node<T> { Node next; T data; public Node() { } public Node(T data原创 2017-11-28 10:49:56 · 1507 阅读 · 0 评论 -
对链表的基本实现和各种操作
为什么使用链表 好处是插入和删除节点更加高效。 缺点是:查找访问不如数组的读取。 需构造一个自己需要的节点类,可设计为嵌套类。对链表的各种操作进行了复习和总结:最好先自己按着列表进行尝试实现,更容易发现问题 主要操作: 1. 头插法 2. 尾插法 3. 任意节点插入 4. 删除头节点 5. 删除指定位置节点 6. 删除指定数据节点 7. 删除node节点(不知道头原创 2017-11-28 11:21:30 · 365 阅读 · 0 评论