越是结构化的有规律的数据操作起来越简单,只是我们没有找到规律和工具。 首先贴代码 首先定义了一个树结构,需求是通过任意节点遍历出其所有的子节点。 根据需求的不同,就会有深度遍历和广度遍历两种,getAllChildrenDFSByReduce(),getAllChildrenDFSByStack() ...
分类:
编程语言 时间:
2020-06-24 17:45:31
阅读次数:
92
ES6版本 链表逆序: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <tit ...
分类:
编程语言 时间:
2020-06-22 18:51:54
阅读次数:
61
一、归并排序 要排序一个数组,先把数组从中间分成前后两部分,然后对前后两部分分别排序,再将排好序的两部分合并在一起。如下图: 重点: 归并排序使用的是分治思想。分治,就是分而治之,将一个大问题分解成小的子问题来解决。 分治思想跟递归思想很像,分治算法一般是用递归实现。 分治是一种解决问题的处理思想, ...
分类:
编程语言 时间:
2020-06-21 23:38:44
阅读次数:
74
在树的基本概念和术语总结一文中介绍了二叉树的基本结构。 在不知道怎样用递归?按步骤来!一文中介绍了如何使用递归。 二叉树的结构是递归的,所以创建、遍历也可以通过递归实现。 下面是一颗二叉树: 结点的定义: public class Node { Integer value; Node leftChi ...
分类:
其他好文 时间:
2020-06-19 15:53:16
阅读次数:
46
组合模式: 适用于 树形结构,例如我们的C盘里面就是一个树形结构,你不知道里面有多少个文件夹,但是现在要找出来c盘下面A文件里面的文件数量 就可以用递归实现 你只需要知道C://A文件盘位置 组合模式分为安全和透明模式 有父类和子类 安全:就是子类自己有递归方法 透明:就是父类自己有递归方法,这就造 ...
分类:
其他好文 时间:
2020-06-16 12:48:26
阅读次数:
46
1 // 深拷贝 2 function cloneDeep(obj) { 3 // 3.根据obj为对象或者数组,产生一个空的对象或数组,存放数据 4 var newobj = obj instanceof Array ? [] : {}, 5 // 1.for...in进入循环 6 for (va ...
分类:
Web程序 时间:
2020-06-01 00:54:32
阅读次数:
88
##二分查找的递归与非递归实现 非递归实现: public int bsearch(int[] a, int n, int value) { int low = 0; int high = n - 1; while (low <= high) { int mid = (low + high) / 2 ...
分类:
其他好文 时间:
2020-05-28 21:38:20
阅读次数:
53
class Solution { public: void preorderTraversal(TreeNode* root) { //1.先逐个访问左路结点,并将其入栈 //2.再访问栈顶元素的右子树 stack<TreeNode*> helper; TreeNode* cur=root; //只 ...
分类:
其他好文 时间:
2020-05-22 00:09:07
阅读次数:
59
题目: 二叉树的后序遍历:给定一个二叉树,返回它的 后序 遍历。 思路: 递归大法好,之后补充使用栈来实现的。 程序1:递归实现 # Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # sel ...
分类:
编程语言 时间:
2020-05-15 20:29:29
阅读次数:
88
递归实现结构很好记,上来写两递归,递归左子树,递归右子树。 前序遍历,访问节点(打印节点)在两个递归前面——中、左、右; 中序遍历,访问放递归中间——左中右; 后序遍历,先两递归,最后才访问——左、中、右。 1)先序遍历void preorder(BiTree T){ if (T != NULL) ...
分类:
其他好文 时间:
2020-05-14 15:51:55
阅读次数:
66