数据结构
鹏之翼
Hello world.
展开
-
图的边集
public class Edge<T>implement Comparable<Edge>{ private T start;//起点 private T end;//终点 private int distance; public Edge(T start,T end,int distance){ this.start=start; this.end=en...原创 2020-03-01 10:54:38 · 1418 阅读 · 0 评论 -
图八连通检测
public class Main{private static char[][]data= { "*@@*@".toCharArray(), "**@*@".toCharArray(), "****@".toCharArray(), "@@@*@".toCharArray(), "@@**@".toCharArray() }; private static i...原创 2020-03-01 10:43:05 · 190 阅读 · 0 评论 -
图_四连通检测
public class Main{ public boolean check(char[][]graph,int[][]lable,int[]points){ int x1=points[0]; int y1=points[1]; int x2=points[2]; int y2=points[3]; if(x1==x2&&y1==y2)retur...原创 2020-03-01 10:28:27 · 183 阅读 · 0 评论 -
求两节点的公共祖先
public class Main(){ private static int getLCA(TreeNode root,TreeNode x,TreeNode y){ if(root.equals(x)&&root.equals(y))return root; boolean x_on_left=cover(root.left,x); boolean y_on_ri...原创 2020-03-01 10:09:00 · 242 阅读 · 0 评论 -
求二叉树某节点后继循环求解
递归相当与隐式的栈public class Main{ public int getSucc(TreeNode<Integer>root,int p){ if(root==null)return -1; Stack<TreeNode>stack=new Stack(); TreeNode<Integer>curr=root; boolean ...原创 2020-03-01 09:42:03 · 91 阅读 · 0 评论 -
判断是否是二叉树2
设置一个全局变量记录前一次的值就行比较public class Main(){ public static boolean checkBST(TreeNode root){ if(root==null)return true; if(!checkBST(root.left))return false;//检查左子 if(root.value<=pre)return fals...原创 2020-02-29 23:25:51 · 171 阅读 · 0 评论 -
判断树是否为二叉树
可中序遍历打印各节点,若为有序则为BST,否则不为public class Main(){ public boolead check(TreeNode<Integer>root){ if(root==null)return true; inorder(root); return checkOrder(list);} //递归的方式将节点按照中序遍历加入到列表中 ...原创 2020-02-29 22:51:51 · 351 阅读 · 0 评论 -
求BST某一层的所有节点
ListNode实现class ListNode<V>{ V value; ListNode next; public ListNode(V value){ this.value=value;} @Overridepublic String toString(){ ListNode p=next; StringBuilder sb=new StringBuilde...原创 2020-02-29 22:34:29 · 86 阅读 · 0 评论 -
判断二叉树是否平衡
法一public class isAVLTree{ public static boolean isBalance(BSTNode node){ if(node==null)return false; int min=getHeight(node.left)-getHeight(node.right);//左右子树高度差 return Math.abs(min)>1||isB...原创 2020-02-26 23:00:10 · 84 阅读 · 0 评论 -
二叉平衡树
AVLTree实现public class AVLTree<K,V>extends BinarySearchTree<K,V>{ @Override public void insert(K key,V value){ //先按照bst的方式插入在调整 BSTNode<K,V>nnode=super.insert(key,value); BSTN...原创 2020-02-26 12:32:12 · 76 阅读 · 0 评论 -
二叉树
BinarySearchTreeBSTNodepublic class BSTNode<K,V>{public K key;public V value;public BSTNode<K,V>parent;public BSTNode<K,V>left;public BSTNode<K,V>right;public boolean i...原创 2020-02-26 01:40:10 · 62 阅读 · 0 评论 -
Tree
Tree_普通树ITree接口public interface ITree<E>{ int getSize();//返回节点个数 TreeNode<E>getRoot();//返回树的根 TreeNode<E>getParent(TreeNode<E>x);//返回x的父节点 TreeNode<E>getFirstChild(...原创 2020-02-25 14:23:24 · 113 阅读 · 0 评论 -
求有环链表环的起点
求有环链表环的起点可设快慢两个指针,当慢指针走一步时,快指针走两步。假设头节点距离环起点有k步,则当慢指针p1走到环起点时,慢指针p1与快指针p2相距k布,若环长度为l,此时看成p2追赶p1则p2与p1相距l-k步数,从此时开始当p1走l-k步时p1与p2相遇,此时在定义一个指向头节点的指针p,p与p1同时向前走,两者相遇点即为环的起点。class ListNode{ Object val;...原创 2020-02-13 11:18:00 · 118 阅读 · 0 评论 -
链表相加
链表相加两个链表个十百位分别相加,大于十则进一class ListNode{ Object val; ListNode next; public ListNode(Object val) { this.val=val; } @Override public String toString() { StringBuilder sb=new StringBuilder(); ...原创 2020-02-13 10:48:18 · 108 阅读 · 0 评论 -
给定值区分链表
定值区分链表给一个定值x,将链表分为两部分,小于x的放在左边,大于x的放在右边.可设置两个链表分别为leftHead与leftTail,rightHead与rightTail用与存储大于或小于x的值,最后在将两个链表连接起来即可class ListNode{ int value; ListNode next=null; public ListNode(int value){ thi...原创 2020-02-13 10:14:26 · 102 阅读 · 0 评论 -
找出链表倒数第K个元素
找出链表倒数第K个元素思路:可设两个头指针p1和p2,当p2开始向前走,当走的步数为k时,p1开始走,此时当p2走到结尾时,p1所指的位置正好为倒数第k个元素的位置class ListNode{ Object val; ListNode next; ListNode(Object val){ this.val=val;}@Overridepublic String toStrin...原创 2020-02-09 12:31:15 · 175 阅读 · 0 评论 -
删除未排序链表中重复的元素
1 删除未排序链表中重复的元素思路:可用hash表判重,若重复则删除否则就加入hash表中public class deleteRepeation{ public static void main(String[]args){ Node head=new Node(null); Node p=head; int arr[]= {1,6,3,5,7,6,64,2,7,5,3,2,2...原创 2020-02-09 12:13:27 · 370 阅读 · 1 评论 -
桶排序
桶排序将元素放入一个桶中,求元素其hash值,hash=e*length/(max+1),用hash作为下标即在桶中的位置,由于会出现元素hash值相同的情况,此时桶中使用链表的方式存储元素。之后每次放入元素都使用插入排序的方式进行排序。代码如下:public class BucketSort{ private int hash(int element,int max,int length)...原创 2020-02-09 10:40:46 · 49 阅读 · 0 评论 -
单双链表
MyList接口public interface<T> extends Iterator<T>{ public void add(T element); public void delete(T element); public void delete(int index); public int indexOf(T element); public boole...原创 2019-11-20 19:58:12 · 145 阅读 · 0 评论 -
线性表
MyList接口定义:public interface Mylist<T> extends Iterator<T>{ public void add(T element);//添加元素 public void delete(T element);//删除元素element public void delete(int index);//删除index处的元素 pu...原创 2019-11-16 00:19:04 · 92 阅读 · 0 评论