首页 > 其他分享 >DFS、BFS模板

DFS、BFS模板

时间:2023-11-05 14:47:45浏览次数:35  
标签:queue 遍历 DFS BFS root 节点 模板

目录

DFS

  • 处理当前节点的位置不同对应着不同的遍历
def preorderTraversal(root):
    if not root:
        return
    print(root.val)  #前序遍历,处理当前节点
    preorderTraversal(root.left) # 递归遍历左子树
    print(root.val)  #中序遍历,处理当前节点
    preorderTraversal(root.right)# 递归遍历右子树
    print(root.val)  #后序遍历,处理当前节点

BFS

  • BFS使用队列,把每个还没有搜索到的点依次放入队列,然后再弹出队列的头部元素当做当前遍历点。BFS总共有两个模板:

  • 如果不需要确定当前遍历到了哪一层,BFS模板如下

while queue 不空:
    cur = queue.pop()
    for 节点 in cur的所有相邻节点:
        if 该节点有效且未访问过:
            queue.push(该节点)
  • 如果要确定当前遍历到了哪一层,BFS模板如下
level = 0    #表示当前遍历到二叉树中的哪一层了
while queue 不空:
    size = queue.size()  #size表示在当前遍历层有多少个元素
    while (size --) {
        cur = queue.pop()
        for 节点 in cur的所有相邻节点:
            if 该节点有效且未被访问过:
                queue.push(该节点)
    }
    level ++;

标签:queue,遍历,DFS,BFS,root,节点,模板
From: https://www.cnblogs.com/lushuang55/p/17809499.html

相关文章

  • 无涯教程-MongoDB - GridFS
    GridFS是MongoDB规范,用于存储和检索大文件,例如图像,音频文件,视频文件等,它是一种文件系统,用于存储文件,但其数据存储在MongoDB集合中。GridFS能够存储甚至超过其文档大小限制16MB的文件。GridFS将文件分为多个块,并将每个数据块存储在单独的文档中,每个文件的最大大小为255k。默......
  • 扩展欧几里得算法模板
    扩展欧几里得算法问题:给定两个非零整数$a$和$b$,求一组整数解$(x,y)$,使得$ax+by=gcd(a,b)$成立($gcd(a,b)$是a、b的最大公约数)。设$$\begin{aligned}ax_1+by_1&=gcd(a,b)\bx_2+(a%b)y_2&=gcd(b,a%b)\end{aligned}$$化简,得递推公式:$$\begin{aligned}&x_1=y_2\&y......
  • 申论大作文模板
    标题1.为......按下“快进键”(强调“快”的主题、加快这方面工作)2.练好......“慢功夫”(过去已经做了很多工作,得到极大发展,但在细节上还需再做得更好)3.把简政放权做实做好(把xx做实做好)4.加强信用体系建设势在必行(xx势在必行)5.夜间经济助力城市发展(xx助力xx)6.开放文......
  • Matlab:作图模板
    plot(x,y,'b-','LineWidth',1.5);set(gca,'FontSize',10,'fontname','TimesNewRoman');xlabel('\fontname{宋体}标题/\fontname{TimesNewRoman}单位')ylabel('\fontname{宋体}标题/\fontname{TimesNe......
  • prometheus-webhook-dingtalk 报警模板
    moretemplate.tmpl{{define"__subject"}}[{{.Status|toUpper}}{{ifeq.Status"firing"}}:{{.Alerts.Firing|len}}{{end}}]{{end}}{{define"__alert_list"}}{{range.}}---**告警名称**:{{index.Annotations"ti......
  • 界面组件DevExtreme v23.1 —— UI模板库更新新功能
    在DevExtreme在v22.2版本中附带了针对Angular、React和Vue的新UI模板库,这个新的UI模板库包含多个响应式UI模板,您可以将其用作业务应用程序的起点,模板包括类似CRM的布局、仪表盘、身份验证表单等。在这篇文章中,我们将看看在v23.1发布周期中引入的与UI模板库相关的更新。DevExtreme......
  • 迭代加深,双向搜索,IDA*,A*,双端队列BFS
    迭代加深://迭代加深搜索//给搜索设定一个范围,如果在这个范围内没有答案那么再加大搜索范围//这么做是为了防止搜索过深,导致利用大量时间搜索无用信息//如果当前搜索是第10位,搜索的是个二叉树,那么前9个就是2^0+2^1+2^2+..+2^9=2^10-1,所以时间复杂度并没增大太多//htt......
  • HDFS Federation实践
    1.背景在Hadoop2.0之前,一个Hadoop集群只支持一对主备NameNode。如下所示,集群中的数据接近2.2亿block,会导致NameNode内存中的文件系统树过大,占用较多内存;同时NameNodecrash后启动时,由于需要加载过多的block,导致启动时间过长。集群每日写入block每日净增block每日数据净增......
  • vue 在模板/v-bind中使用方法methods 的问题
    每当渲染发生时,就会调用该方法并运行该函数。每次组件渲染时都会运行。模板中的函数调用会带来更大的性能成本。(相比computed)每次组件重新渲染时,vue模板中调用的函数都会执行。如果这些函数的计算成本很高,它们可能会降低应用程序的性能。你不希望这样,是吗?......
  • 【MME编写入门】后处理模板
    1float4ClearColor={1,1,1,0};2floatClearDepth=1.0;34floatScript:STANDARDSGLOBAL<5stringScriptOutput="color";6stringScriptClass="scene";7stringScriptOrder="postprocess";8......