树的深度优先和广度优先
1.深度优先算法----采用栈(非递归)
/*** 深度优先遍历,相当于先根遍历* 采用非递归实现* 需要辅助数据结构:栈*/public void depthOrderTraversal(){if(root==null){System.out.println("empty tree");return;} Stack<TreeNode> stack = new Stack(); //也可以用栈实现stack.push(root); while(stack.isEmpty()==false){TreeNode node=stack.pop();System.out.print(node.value+" ");if(node.right!=null){stack.push(node.right);}if(node.left!=null){stack.push(node.left);} }System.out.print("\n");}
深度优先—递归
private void depthTraversal(TreeNode tn) { if (tn!=null&&!tn.equals(null)) { System.out.print(tn.value+" "); depthTraversal(tn.left); depthTraversal(tn.right); } }
2.广度优先算法—采用队列
/*** 广度优先遍历* 采用非递归实现* 需要辅助数据结构:队列*/public void levelOrderTraversal(){if(root==null){System.out.println("empty tree");return;}ArrayDeque<TreeNode> queue=new ArrayDeque<TreeNode>();queue.add(root);while(queue.isEmpty()==false){TreeNode node=queue.remove();System.out.print(node.value+" ");if(node.left!=null){queue.add(node.left);}if(node.right!=null){queue.add(node.right);}}System.out.print("\n");}
树的深度优先和广度优先相关推荐
- 简述树的深度优先及广度优先遍历算法,并说明非递归实现?
深度优先遍历二叉树. 1. 中序遍历(LDR)的递归算法: 若二叉树为空,则算法结束:否则: 中序遍历根结点的左子树: 访问根结点: 中序遍历根结点的右子树. 2. 前序遍历(DLR)的递归算法: 若 ...
- 深度优先和广度优先算法(例题)
在LeetCode上面刷题刷到一道二叉树的题,这道题我认为对学习树的深度优先和广度优先算法有一定的帮助,先来看一下题 这道题是这样的: 给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返 ...
- 多级树的深度优先遍历与广度优先遍历(Java实现)
目录 多级树的深度优先遍历与广度优先遍历(Java实现) 节点模型 深度优先遍历 广度优先遍历 多级树的深度优先遍历与广度优先遍历(Java实现) 深度优先遍历与广度优先遍历其实是属于图算法的一种,多 ...
- 树的搜索问题1(深度优先、广度优先,爬山法和best-first)
前言 我们在解决问题中经常使用到的数据结构一定少不了树,在数据结构这一大块中,我们对每一个结构都会讲各种形形色色的操作,比如栈的压栈出栈,树的各种遍历,但其实数据结构最重要的操作其实是搜索.如果我们不 ...
- 树的基本概念和遍历规则 数据结构和算法 二叉树遍历(前序、中序、后序、层次、深度优先、广度优先遍历)
zsychanpin 博客园 首页 新随笔 联系 订阅 管理 树的基本概念和遍历规则 树的递归定义 树是n(n>0)个结点的有限集,这个集合满足下面条件: ⑴有且仅有一个结点没有前驱 ...
- 【树】二叉树遍历算法(深度优先、广度优先遍历,前序、中序、后序、层次)及Java实现...
[树]二叉树遍历算法(深度优先.广度优先遍历,前序.中序.后序.层次)及Java实现 目录 一.前序遍历 二.中序遍历 三.后序遍历 四.层次遍历 遍历的作用 二叉树是一种非常重要的数据结构,很多其它 ...
- 树遍历(深度优先和广度优先)
目录 深度优先 先序遍历 后序遍历 广度优先 对于树结构的遍历一般有深度优先和广度优先 广度优先和深度优先的概念很简单,区别如下: 深度优先,访问完一颗子树再去访问后面的子树,而访问子树的时候,先访问 ...
- python爬虫算法深度优先_爬虫课程(四)|深度优先和广度优先算法
深度优先和广度优先算法在爬取一个整站上经常用到,本课程主要讲解这两个算法的原理以及使用过程. 一.网站的树结构 1.1.一个网站的url结构图 以知乎为例,知乎目前有发现.话题.Live.书店.圆桌. ...
- 白话Elasticsearch53-深入聚合数据分析之Collect Model_bucket优化机制:深度优先、广度优先
文章目录 概述 官网 示例 概述 继续跟中华石杉老师学习ES,第53篇 课程地址: https://www.roncoo.com/view/55 官网 Collect Model:戳这里 示例 当bu ...
- 6.1 图的深度优先和广度优先搜索
图的广度优先搜索 图的的搜索算法主要分为广度优先搜索(breadth-first search或BFS)和深度优先搜索(depth-first search或DFS).首先讨论广度优先搜索算法. 称之 ...
最新文章
- fwrite视频写入帧率测试(不用测了。。)
- 真良心大厂EPIC,页游广告又有新素材了!
- python代码优化无限营销软件工作室_这个教程价值有点高,利用Python制作全自动化营销软件!...
- namespace! 报错
- 计算一列中某个值的个数
- python判断序列值横穿整个区间的次数
- gridsearchcv参数_Python机器学习库Sklearn系列教程(21)-参数优化
- 一种编程范式:对拍编程
- linux查看log日志在哪,如何查看linux的系统log日志
- 使用enum建立简单的状态机
- 【观察】神州数码:三生万物,云起神州
- android onitemclick参数,Android里的AdapterView中OnItemClickListener监听器四个参数的含义...
- Conficker.AE病毒局域网扫描工具
- 【博学谷学习记录】超强总结,用心分享|Java基础语法week2
- 互联网公司纷纷裁员,大家都在说互联网行业进入了寒冬期
- 3个国内最大的黑客学习网站
- 西安鹏程张建宁老师主讲网络安全
- 倒数闩锁CountDownLatch源码浅析
- 不管你是学习技术为了找工作还是创业,你都要对技术本身有个清醒的认识,在中国不会出现比尔盖茨及乔布斯
- R语言使用caret包的confusionMatrix函数计算混淆矩阵、基于混淆矩阵的信息手动编写函数计算accuray、准确率指标