归并排序的两种方法 递归(自顶向下) 将一个大的无序的数组分成两个,然后拿出其中一个再分为两个···一直这样下取,直到最后剩下一个,那么这只包含一个元素的数组就是有序的了,然后将两个这样的数组通过merge方法有序的合并,一级一级,直到最开始的两个合并了就排序完了 先实现一个merge用来将两个有序 ...
分类:
编程语言 时间:
2020-10-08 19:03:04
阅读次数:
21
给定一个单向链表的头结点,要求将链表反转,并返回新的头结点。 一、迭代实现 思路:遍历链表,依次调整每个节点的指针域。 定义 结点p指向当前节点 结点q指向当前节点的下一个结点(p->next非空时) 结点r指向当前节点的前一个结点 节点newhead指向新头结点() 初始 p=head,q=NUL ...
分类:
编程语言 时间:
2020-09-17 16:07:27
阅读次数:
24
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), r ...
分类:
其他好文 时间:
2020-09-16 12:19:36
阅读次数:
29
//前序遍历 /** * 根-左-右,所以入栈的时候要相反,有右节点则加入右节点,有左节点则加入左节点,每车循环的时候,弹一个 */ public ArrayList<Integer> preorderTraversal(TreeNode root) { ArrayList<Integer> lis ...
分类:
编程语言 时间:
2020-09-11 14:23:16
阅读次数:
41
定义:递归,就是在运行的过程中调用自己。 构成递归需要的条件: 子问题须与原始问题为同样的事,且更为简单; 不能无限制地调用本身,须有个出口,化简为非递归状况处理。 Note: Python的最大递归层数是可以设置的,默认的在window上的最大递归层数是998, 可以通过sys.setrecurs ...
分类:
编程语言 时间:
2020-08-24 15:14:39
阅读次数:
49
前言 本文收录于专辑:http://dwz.win/HjK,点击解锁更多数据结构与算法的知识。 你好,我是彤哥,一个每天爬二十六层楼还不忘读源码的硬核男人。 上一节,我们使用位图介绍了12306抢票算法的实现,没有收到推送的同学可以点击上方专辑查看,或者在公主号历史消息中查看。 在上一节的最后,彤哥 ...
分类:
其他好文 时间:
2020-08-13 12:26:30
阅读次数:
49
先序遍历与中序遍历的代码实现是差不多的 只是把访问节点的操作放到了入栈操作前 代码实现: #include <stdio.h> #include <string.h> #include <stdlib.h> #define ElementType char int top = -1; //定义top ...
分类:
其他好文 时间:
2020-07-31 18:04:02
阅读次数:
118
#include <stdlib.h> #include <stdio.h> //二分查找非递归 int Binary_Search(int list[],int key,int length){ int low=0,high=length-1; while (low<=high){ int mid ...
分类:
其他好文 时间:
2020-07-30 21:44:08
阅读次数:
69
先序遍历:根-->左-->右的形式 public static void preOrderTraveralWithStsck(Node node){ Stack<Node> stack = new Stack(); //当节点的左右孩子全为空并且,栈空表示遍历完毕 while (node != nu ...
分类:
编程语言 时间:
2020-07-27 09:42:07
阅读次数:
81