思路: 中序:左->根->右 1.需要一个建立一个栈,首先将左子树放入栈中 2.获取栈顶元素并进行节点判断是否有右子树 3. 代码: /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode ...
分类:
其他好文 时间:
2020-07-27 23:50:51
阅读次数:
62
#1 栈 ##1.1 栈的基本概念 栈(stack)又名堆栈,它是一种 运算受限的线性表。限定 仅在表尾进行插入和删除操作 的线性表。表尾被称为栈顶,相对地,把另一端称为栈底。 ###1.1.1 特点 它的特殊之处在于限制了这个线性表的插入和删除的位置,它始终只在栈顶进行。这也就使得:栈底是固定的, ...
分类:
编程语言 时间:
2020-07-27 23:47:07
阅读次数:
64
双向bfs和双向dfs 1. 算法分析 当进行的变换是可逆的时候,且规定步数的上限时,可以使用双向dfs或双向bfs从源点和终点一起搜索。这样可以把时间从O(n)->O(n/2) 如果dfs调栈超过1e5时,那么考虑双向bfs 写法技巧 双向dfs 第一个dfs先搜索前一半的空间,打表存储所有可达的 ...
分类:
其他好文 时间:
2020-07-27 13:39:54
阅读次数:
66
floodfill 1.算法分析 floodfill就是求出连通块的算法,一般可以采用dfs或者bfs,但是dfs容易爆栈,故而采用bfs为佳 2. 例题 acwing1097池塘计数 一块N * M的土地,其中有'W'和'.'组成,'.'为土地,'W'为水,水的八个方向可以连在一起形成池塘,问一块 ...
分类:
其他好文 时间:
2020-07-27 13:37:49
阅读次数:
56
先序遍历:根-->左-->右的形式 public static void preOrderTraveralWithStsck(Node node){ Stack<Node> stack = new Stack(); //当节点的左右孩子全为空并且,栈空表示遍历完毕 while (node != nu ...
分类:
编程语言 时间:
2020-07-27 09:42:07
阅读次数:
81
1.栈的基础使用,js中数组直接可以作为栈使用,栈遵循先进后出的原则,即js可以使用push()和pop() 比较容易的实现一个栈 20. 有效的括号给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 ...
分类:
编程语言 时间:
2020-07-27 09:34:28
阅读次数:
84
面试思路 这部分其实说的很好,算法是能力,但是面试是“技巧+能力”。面试不能够充分反应一个人的算法水平,但是配合一些技巧可以帮助展现出自己的水平。结合书中内容和自己的做题,总结了以下内容: 画图把问题具体化,比较适合栈与队列、树、图的问题 没有思路时记得举例子,从中发现规律 把新的问题通过转化变成小 ...
分类:
其他好文 时间:
2020-07-26 23:14:35
阅读次数:
71
1. 区别 == 和 == 比较的是两个变量的值 比较两个变量的 类型 和 值 基本数据类型(undefined,boolean,number,string,null) 存放在栈内存中的简单数据段,数据大小确定,内存空间大小可以分配,是直接按值存放的,所以可以直接访问。 基本数据类型的比较是值的比较 ...
分类:
其他好文 时间:
2020-07-26 23:12:20
阅读次数:
94
开始之前:如果还没有安装弹性堆栈,现在就安装。请参见弹性堆栈入门。 从下载页面下载Winlogbeat zip文件。 将内容解压缩到 C:\Program 文件中。 将winlogbeat-<version>目录重命名为winlogbeat。 以管理员身份打开PowerShell提示符(右键单击Po ...
栈的规则性设计 问题:定义栈的数据结构,请在该类型中实现一个能够得到栈中所含小元素的min函数(时间复杂度应为O(1))。 保证测试中不会当栈为空的时候,对栈调用pop()或者min()或者top()方法。 解决: #使用辅助栈 class Solution: def __init__(self): ...
分类:
其他好文 时间:
2020-07-26 19:23:34
阅读次数:
68