二叉树广度优先遍历:一层一层 二叉树深度优先遍历:前序(根左右)、中序(左根右)、后序(左右根) class Node(): def __init__(self, item): self.item = item self.left = None self.right = None class Tre ...
分类:
其他好文 时间:
2020-06-24 23:53:15
阅读次数:
105
有向图 无向图 概念 时间戳 \(dfn[x]\),在深度优先遍历中,按照每个节点第一次被访问的顺序,依次做整数标记 追溯值 \(low[x]\),通过非搜索边能到达的最小时间戳 割边判定法则 无向边$(x,y)$是割边/桥,当且仅当存在x的一个子节点满足$dfn[x] < low[y]$ 删除无向 ...
分类:
编程语言 时间:
2020-06-24 15:53:36
阅读次数:
48
就是dfs,有个好听的名字叫回溯,其实就是穷举法,这种算法的时机复杂度为n^level ,效率还是很低的 import java.util.Stack; public class DFSTest { public static void main(String[] args) { char[] p ...
分类:
其他好文 时间:
2020-06-21 09:48:15
阅读次数:
45
利用深度优先遍历和递归 var acceptUnitNodes = null;//接收单位树形数据 function findParentNode(ids){ //ids 是子节点数组 var parentNodes = [];//所有父节点 var forfun = function (id,no ...
分类:
Web程序 时间:
2020-06-20 11:31:13
阅读次数:
270
import java.util.ArrayList;import java.util.HashMap;import java.util.HashSet;import java.util.Stack;/** * 图的深度优先遍历 */public class DepthFirst { public ...
分类:
其他好文 时间:
2020-06-14 10:50:30
阅读次数:
57
图的遍历是指访问图中的每一个顶点,且只访问一次。最经典的遍历图的方法就是深度优先遍历和广度优先遍历,这两种遍历方法都会产生一个生成树。我们用程序来实现这两种遍历算法的时候,一定要认真分析它们的算法思想以及具体细节,因为遍历图的顶点,每个顶点只能访问一次,所以需要专门设置一个访问标记数组用于标记顶点是 ...
分类:
其他好文 时间:
2020-06-14 01:16:13
阅读次数:
82
题目描述: 给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明:叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7],返回深度为3 深度优先遍历:先序遍历,可递归,可用栈 //C 递归 int maxDepth(st ...
分类:
其他好文 时间:
2020-06-13 10:36:10
阅读次数:
57
题目描述: 给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 深度优先遍历,递归或者用栈 //C //递归 bool isSameTree(struct TreeNode* p, struct TreeNode* q){ if(p = ...
分类:
其他好文 时间:
2020-06-12 14:24:15
阅读次数:
43
图可以用邻接矩阵(顶点和顶点矩阵)和邻接表(顶点的链表)两种形式的结构来存储。 还有逆邻接表,顶点依然是头结点,但后续存的是谁指向你的。还有十字链表。。。 漫画:什么是 “图”?(修订版) 图的遍历:DFS,BFS 搞搞清楚! 漫画:深度优先遍历 和 广度优先遍历 二分图 如果可以用两种颜色对图中的 ...
分类:
其他好文 时间:
2020-06-11 21:25:40
阅读次数:
122
一笔画判断 时间限制:1秒 内存限制:128M 题目描述 如果一个图存在一笔画,则一笔画的路径叫做欧拉路,如果最后又回到起点,那这个路径叫做欧拉回路。 根据一笔画的两个定理,如果寻找欧拉回路,对任意一个点执行深度优先遍历;找欧拉路,则对一个奇点执行dfs,时间复杂度为O(m+n),m为边数,n是点数 ...
分类:
其他好文 时间:
2020-06-10 20:50:53
阅读次数:
208