![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
郑兽兽
睡在哪里都是睡在夜里
展开
-
排序算法之冒泡排序
冒泡排序-原理:重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。实现:public static void bubbleSort(int[] array) { // 从后往前遍历, 每次原创 2020-05-12 01:02:16 · 131 阅读 · 0 评论 -
层序遍历二叉树
分析:层序遍历二叉树借助队列实现,先放入根节点,取队首,遍历根节点,再放入其左子树,右子树,再取,依次遍历。代码:public class TreeTest { static class TreeNode{ TreeNode left; TreeNode right; int val; public TreeNode(i...原创 2020-04-22 22:19:46 · 127 阅读 · 0 评论 -
给定两个二叉树,编写一个函数来检验它们是否相同。(力扣习题)
给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例:来源:力扣(LeetCode)。代码:** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * Tr...原创 2020-04-22 21:22:58 · 600 阅读 · 0 评论 -
二叉树的后序遍历(力扣题)
给定一个二叉树,返回它的 后序 遍历。示例:输入: [1,null,2,3]输出: [3,2,1]来源:力扣(LeetCode)代码:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode righ...原创 2020-04-20 20:53:33 · 266 阅读 · 0 评论 -
二叉树的中序遍历(力扣)
给定一个二叉树,返回它的中序 遍历。示例:输入: [1,null,2,3]12/3输出: [1,3,2]来源:力扣(LeetCode)代码:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeN...原创 2020-04-20 20:49:44 · 172 阅读 · 0 评论 -
二叉树的前序遍历(力扣题)
给定一个二叉树,返回它的 前序 遍历。示例:输入: [1,null,2,3]输出: [1,2,3]来源:力扣(LeetCode)代码:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode righ...原创 2020-04-20 20:45:08 · 209 阅读 · 0 评论 -
使用递归查找二叉树是否存在某个节点(查找二叉树是否存在某个值)
下面是一个二叉树,查找某个值是否存在。代码:public class TestTree { static class Node { public char val; public Node left; public Node right; public Node(char val) { this....原创 2020-04-20 20:38:41 · 2448 阅读 · 0 评论 -
求二叉树第K层节点个数(递归)
下面是一个二叉树,我们需要求得第K层的节点个数。代码:public class TestTree { static class Node { public char val; public Node left; public Node right; public Node(char val) { t...原创 2020-04-20 20:25:03 · 3576 阅读 · 0 评论 -
求二叉树的叶子节点个数(递归)
下面是一个二叉树,我们需要编写代码求其的叶子节点个数。分析:一个树的左子树和右子树都为null就是叶子节点,我们需要对每个数进行判断,依次遍历,遇到满足条件的进行计数即可。我在下面用了两种方法,其中一种是借助静态成员变量代码:public class TestTree { static class Node { public char val; p...原创 2020-04-20 20:07:38 · 9755 阅读 · 0 评论 -
求二叉树节点个数(递归)
下面有一个二叉树,求其节点个数。分析:想要得到二叉树的节点个数,我们可以递归遍历这个二叉树,当一个树的根节点不为null时,对其计数。我在下面得代码里写了两种方法,一种是借助成员变量,一种是直接递归计数。代码:public class TestTree1 { static class Node { public char val; public ...原创 2020-04-19 21:15:36 · 7567 阅读 · 0 评论 -
二叉树的三种递归遍历(前序,中序,后序)
今天跟大家分享二叉树常见的三种遍历方式。根据访问结点操作发生位置命名。NLR:前序遍历(Preorder Traversal 亦称先序遍历)——访问根结点的操作发生在遍历其左右子树之前。LNR:中序遍历(Inorder Traversal)——访问根结点的操作发生在遍历其左右子树之中(间)。LRN:后序遍历(Postorder Traversal)——访问根结点的操作发生在遍历其左右子树...原创 2020-04-19 20:17:02 · 815 阅读 · 0 评论 -
给定一个链表,判断链表中是否有环(易理解)
代码:/** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */public cl...原创 2020-03-31 00:16:34 · 302 阅读 · 0 评论 -
删除链表中等于给定值 key 的所有节点
public void removeAllKey(int Key){ Node prev = this.head; Node cur = this.head.next; while(cur != null) { if(cur.data == key) { prev.next = cur.next; cur = ...原创 2020-03-31 00:07:42 · 214 阅读 · 0 评论 -
给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。
实现类:public class Solution { public ListNode detectCycle(ListNode head) { if(head==null) { return null; } ListNode fast=head; ListNode slow = head; ...原创 2020-03-31 00:04:20 · 161 阅读 · 0 评论 -
编写一个程序,找到两个单链表相交的起始节点。
如下面的链表。注意:如果两个链表没有交点,返回 null.在返回结果后,两个链表仍须保持原有的结构。可假定整个链表结构中没有循环。程序尽量满足 O(n) 时间复杂度,且仅用 O(1) 内存。代码:/** * Definition for singly-linked list. * public class ListNode { * int val; * Lis...原创 2020-03-31 00:00:10 · 225 阅读 · 0 评论 -
链表的回文结构
题目描述:对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构。给定一个链表的头指针A,请返回一个bool值,代表其是否为回文结构。保证链表长度小于等于900。测试样例:1->2->2->1返回:true代码:import java.util.*;/*public class ListNode { int ...原创 2020-03-30 23:54:04 · 111 阅读 · 0 评论 -
删除链表中重复的结点
题目描述:在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5代码:/* public class ListNode { int val; ListNode next = null; ListNod...原创 2020-03-30 23:50:24 · 59 阅读 · 0 评论 -
无头双向链表的实现
1.链表操作类class LinkedListNode{ public int val; public LinkedListNode prev; public LinkedListNode next; public LinkedListNode(int val) { this.val = val; }}public class Doub...原创 2020-03-29 19:56:25 · 188 阅读 · 0 评论 -
无头单向非链表的实现
//节点类class Node { public int data; public Node next; public Node(int data) { this.data = data; this.next = null; }}//单链表public class MyLinedList { public Node h...原创 2020-03-27 20:56:54 · 85 阅读 · 0 评论 -
实现对动态顺序表的增删改查
增删改查的操作类public class SeqList { public int[] elem; public int usedSize; public static final int DEFAULT_SIZE = 10; public SeqList() { this.elem = new int[DEFAULT_SIZE]; ...原创 2020-03-23 16:17:47 · 91 阅读 · 0 评论