bfs 二叉树 遍历

2023-11-13

bfs 遍历二叉树

之前只知道bfs 的思想以及需要使用队列来进行存储

为了更好的理解bfs
手写了bfs 遍历二叉树的两种方式

方法:

一种是采用常用的递归执行
另一种是采用循环执行(使用栈来代替递归)

二叉树定义

class Node {
	//get set方法省略
	private Node leftChild;
	private Node rightChild;
	private int data;

	public Node(int data) {
		this.data = data;
	}
	
}

构造二叉树


Node node = new Node(1);

		node.setLeftChild(new Node(2));
		node.setRightChild(new Node(3));
		node.getLeftChild().setLeftChild(new Node(4));
		node.getLeftChild().setRightChild(new Node(5));
	
		bfs(node);

使用bfs

方式一:递归
public static void bfs(Node node) {
		if (node != null) {
			System.out.println(node.getData());
			if (node.getLeftChild() != null) {
				queue.add(node.getLeftChild());
			}
			if (node.getRightChild() != null) {
				queue.add(node.getRightChild());
			}
		}
		if(!queue.isEmpty()){
			bfs(queue.remove());
		}
	}
方式二:循环
public static void bfsUseLoop(Node node) {
		queue.add(node);
		while (!queue.isEmpty()) {

			Node remove = queue.remove();
			System.out.println(remove.getData());
			if (remove.getLeftChild() != null) {
				queue.add(remove.getLeftChild());
			}
			if (remove.getRightChild() != null) {
				queue.add(remove.getRightChild());
			}
		}
	}

参考文章

数据结构—递归与非递归实现DFS与BFS

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

bfs 二叉树 遍历 的相关文章

  • js判断多个数组之间是否存在交集

    代码如下 定义一个二维数组 数组中包含N个数组 const arrays 1 2 3 4 5 6 2 7 8 9 10 2 把数组传入进来 function checkIntersection arrays for let i 0 i lt
  • 【小程序】那些年小程序碰过的坑——Scroll-view跳转问题

    序 写到scroll view 就不得不涉及到其中的各个Object属性 但是这个控件本身又很奇特 属性内部经常自相矛盾 着实让人头疼不已 好记性不如烂笔头 记录下来警示自己 也帮助他人 何乐而不为呢 正文 要想Scrolliew进行跳转
  • mat1 and mat2 shapes cannot be multiplied (128x432 and 576x64)的解决

    仅作为记录 大佬请跳过 今天博主在跑大佬博主的pytorch cnn分类mnist数据集的程序 大佬博主文章 第四个网络 出现问题 经过尝试 发现是在定义网络中的问题 将x x view 128 1 改为x x view 1 64 3 3
  • error: struct type mismatch between shaders for uniform (named light)

    openGL系列文章目录 文章目录 openGL系列文章目录 前言 一 错误原因 二 排查错误 1 使用glslangValidator exe工具 2 顶点着色器着色器1 vert1Shader vert 顶点着色器着色器2 vert2S
  • 【GD32F427开发板试用】 CAN总线收发测试

    本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动 更多开发板试用活动请关注极术社区网站 作者 meijing 这篇测试下CAN通信的收发测试 代码使用库例程中修改 硬件部分 测试用到了CAN0 串口0和定时器1 1 gt
  • 【读书笔记】Linux高性能服务器编程(第二篇 第五章)

    第五章 Linux网络编程基础API 5 1 socket地址API 5 1 1 主机字节序和网络字节序 字节序分为 1 大端字节序 一个整数的高位字节 23 31 bit 存储在内存的低地址处 低位字节 0 7 bit 存储在内存的高地址
  • okhttp Retrofit统一处理返回请求 okhttp Retrofit统一处理返回数据

    okhttp Retrofit统一处理返回请求 okhttp Retrofit统一处理返回数据 Gson gson new GsonBuilder serializeNulls create 1 配置创建okhttp客户端 OkHttpCl
  • 《Python核心编程》读书笔记

    第一章 Python对象 1 1 Python对象 Python使用对象模型来存储数据 所有的Python对象都有三个特性 身份 类型和值 身份可以使用内建函数id 得到 类型可以使用内建函数type 查看 1 2 标准类型 数字 整形 I
  • WGS84的理解

    转载 https support virtual surveyor com en support solutions articles 1000261351 what is wgs84 text When 20you 20determine
  • Xilinx AXI VIP使用教程

    Xilinx提供了用于验证AXI相关设计的AXI VIP AXI Verification IP 它可以对自己设计的AXI接口模块进行全方位的验证 如使用VIP的Master Passthrough Slave三种模式对自己写的AXI接口进
  • 宝塔面板登录失败

    这是七月初出现的宝塔面板登录问题 如下 登录界面一直在转圈圈 只是最近两周在写项目和刷算法题 无暇顾及这个问题 现在给出解决方法 2023 07 24午 首先保证网络环境良好 手机热点很不靠谱的 最好是直连路由器 家里的或者学校宿舍的 其实
  • 面板数据实证过程-基于政府补贴对企业研发投入的影响分析

    一 数据来源 国泰安CSMAR 二 数据对象 同花顺BKDC26股票 新能源板块 内所有上市公司 剔除ST及数据缺失的公司 三 年份选取 2016 2019年 四 变量列举 变量表 被解释变量 RDratio 企业研发投入程度 主解释变量
  • 如何调用高德地图api

    首先注册成为高德地图开发者 创建应用后申请key 1 引入高德地图API 2 创建地图容器 div div width 300px height 180px 指定大小样式 3 创建默认地图 方式一 var map new AMap Map
  • 饥荒专用服务器全图显示代码,饥荒地图怎么看 饥荒地图全开代码

    最近很多玩家表示在玩 饥荒 的时候 经常会有遇到各种各样的问题 比如新建一个世界然后辛辛苦苦跑完整张地图 结果发现世界里没猪王 整个地图居然没有六眼飞虫雕像 猪王雕像地洞各种靠的近 结果发现全图没海象 小编今天为各位玩家带来了一些解决问题的
  • mysql的全量备份和增量备份

    文章目录 全量备份 1 创建mysqldump脚本 1 1 找一个目录 这里选择放到 data mysqlbackup下 创建shell脚本 1 2 添加内容 1 3给脚本赋予执行权限 2 crontab 2 1查看cron状态 2 1创建
  • GTX1660TI 算力

    7 5
  • 前端面试题 vue专项,共计58道

    vue篇 1 什么是MVVM 2 Vue声明周期 3 为什么vue中data必须是一个函数 4 vue router有几种导航钩子 5 Vue的v show和v if区别 6 vue loader是什么 使用它的用途有哪些 7 计算属性和w
  • 使用Opencv+SVM+Hog进行行人识别的代码

    OpenCV include
  • CLOUD 云计算进阶(二)- openstack 服务搭建与应用

    什么是云计算 基于互联网的相关服务的增加 使用和交互模式 这种模式提供可用的 便捷的 按需的网络访问进入可配置的计算机网络共享池 这些资源能够被快速提供 只投入很少的管理工作 或者与服务供应商进行很少的交互 通常通过互联网来提供动态易拓展且
  • python绘制散点图和折线图

    散点图 一般和相关分析 回归分析结合使用 import pandas import matplotlib import matplotlib pyplot as plt plot circle pandas read csv D Pytho

随机推荐