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. 简述树的深度优先及广度优先遍历算法,并说明非递归实现?

    深度优先遍历二叉树. 1. 中序遍历(LDR)的递归算法: 若二叉树为空,则算法结束:否则: 中序遍历根结点的左子树: 访问根结点: 中序遍历根结点的右子树. 2. 前序遍历(DLR)的递归算法: 若 ...

  2. 深度优先和广度优先算法(例题)

    在LeetCode上面刷题刷到一道二叉树的题,这道题我认为对学习树的深度优先和广度优先算法有一定的帮助,先来看一下题 这道题是这样的: 给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返 ...

  3. 多级树的深度优先遍历与广度优先遍历(Java实现)

    目录 多级树的深度优先遍历与广度优先遍历(Java实现) 节点模型 深度优先遍历 广度优先遍历 多级树的深度优先遍历与广度优先遍历(Java实现) 深度优先遍历与广度优先遍历其实是属于图算法的一种,多 ...

  4. 树的搜索问题1(深度优先、广度优先,爬山法和best-first)

    前言 我们在解决问题中经常使用到的数据结构一定少不了树,在数据结构这一大块中,我们对每一个结构都会讲各种形形色色的操作,比如栈的压栈出栈,树的各种遍历,但其实数据结构最重要的操作其实是搜索.如果我们不 ...

  5. 树的基本概念和遍历规则 数据结构和算法 二叉树遍历(前序、中序、后序、层次、深度优先、广度优先遍历)

    zsychanpin 博客园 首页 新随笔 联系 订阅 管理 树的基本概念和遍历规则 树的递归定义 树是n(n>0)个结点的有限集,这个集合满足下面条件:       ⑴有且仅有一个结点没有前驱 ...

  6. 【树】二叉树遍历算法(深度优先、广度优先遍历,前序、中序、后序、层次)及Java实现...

    [树]二叉树遍历算法(深度优先.广度优先遍历,前序.中序.后序.层次)及Java实现 目录 一.前序遍历 二.中序遍历 三.后序遍历 四.层次遍历 遍历的作用 二叉树是一种非常重要的数据结构,很多其它 ...

  7. 树遍历(深度优先和广度优先)

    目录 深度优先 先序遍历 后序遍历 广度优先 对于树结构的遍历一般有深度优先和广度优先 广度优先和深度优先的概念很简单,区别如下: 深度优先,访问完一颗子树再去访问后面的子树,而访问子树的时候,先访问 ...

  8. python爬虫算法深度优先_爬虫课程(四)|深度优先和广度优先算法

    深度优先和广度优先算法在爬取一个整站上经常用到,本课程主要讲解这两个算法的原理以及使用过程. 一.网站的树结构 1.1.一个网站的url结构图 以知乎为例,知乎目前有发现.话题.Live.书店.圆桌. ...

  9. 白话Elasticsearch53-深入聚合数据分析之Collect Model_bucket优化机制:深度优先、广度优先

    文章目录 概述 官网 示例 概述 继续跟中华石杉老师学习ES,第53篇 课程地址: https://www.roncoo.com/view/55 官网 Collect Model:戳这里 示例 当bu ...

  10. 6.1 图的深度优先和广度优先搜索

    图的广度优先搜索 图的的搜索算法主要分为广度优先搜索(breadth-first search或BFS)和深度优先搜索(depth-first search或DFS).首先讨论广度优先搜索算法. 称之 ...

最新文章

  1. fwrite视频写入帧率测试(不用测了。。)
  2. 真良心大厂EPIC,页游广告又有新素材了!
  3. python代码优化无限营销软件工作室_这个教程价值有点高,利用Python制作全自动化营销软件!...
  4. namespace! 报错
  5. 计算一列中某个值的个数
  6. python判断序列值横穿整个区间的次数
  7. gridsearchcv参数_Python机器学习库Sklearn系列教程(21)-参数优化
  8. 一种编程范式:对拍编程
  9. linux查看log日志在哪,如何查看linux的系统log日志
  10. 使用enum建立简单的状态机
  11. 【观察】神州数码:三生万物,云起神州
  12. android onitemclick参数,Android里的AdapterView中OnItemClickListener监听器四个参数的含义...
  13. Conficker.AE病毒局域网扫描工具
  14. 【博学谷学习记录】超强总结,用心分享|Java基础语法week2
  15. 互联网公司纷纷裁员,大家都在说互联网行业进入了寒冬期
  16. 3个国内最大的黑客学习网站
  17. 西安鹏程张建宁老师主讲网络安全
  18. 倒数闩锁CountDownLatch源码浅析
  19. 不管你是学习技术为了找工作还是创业,你都要对技术本身有个清醒的认识,在中国不会出现比尔盖茨及乔布斯
  20. R语言使用caret包的confusionMatrix函数计算混淆矩阵、基于混淆矩阵的信息手动编写函数计算accuray、准确率指标

热门文章

  1. 如何在Mac电脑上调整日期和时间?如何高效管理时间?
  2. 怎么样可以在网络上赚钱,告诉你网上赚钱的5种方法!
  3. Unity精华☀️Audio Mixer终极教程:用《双人成行》讲解它的用途
  4. java 职责单一原则,设计模式原则之一:单一职责原则
  5. 封装pc端获取经纬度 百度地图
  6. getBytes方法
  7. 编写程序,求柱体的体积:
  8. uniapp H5 调用高德地图导航
  9. DDOS攻击已然渗透互联网和物联网
  10. iOS 判断机型是否为iPhone Xs Max