Java 深度遍历和广度优先遍历

Posted 她在丛中笑

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 深度遍历和广度优先遍历相关的知识,希望对你有一定的参考价值。

概念定义

深度优先遍历:深度优先遍历是图论中的经典算法。其利用了深度优先搜索算法可以产生目标图的相应拓扑排序表,采用拓扑排序表可以解决很多相关的图论问题,如最大路径问题等等。

       根据深度优先遍历的特点我们利用Java集合类的栈Stack先进后出的特点来实现。我用二叉树来进行深度优先搜索。

广度优先遍历:广度优先遍历是连通图的一种遍历策略,因为它的思想是从一个顶点V0开始,辐射状地优先遍历其周围较广的区域故得名。

          根据广度优先遍历的特点我们利用Java数据结构队列Queue来实现。

 

代码:

public class TreeNode {    

int data;
TreeNode leftNode;
TreeNode rightNode;

public TreeNode() {

}

public TreeNode(int d) {
data=d;
}

public TreeNode(TreeNode left,TreeNode right,int d) {
  leftNode=left;
  rightNode=right;
  data=d;
  }
}

 

package theTransverseOfDigram;

import java.lang.invoke.StringConcatException;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;

public class Traverse {

public static void main(String[] args) {
TreeNode head = new TreeNode(1);
TreeNode second = new TreeNode(2);
TreeNode three = new TreeNode(3);
TreeNode four = new TreeNode(4);
TreeNode five = new TreeNode(5);
TreeNode six = new TreeNode(6);
TreeNode seven = new TreeNode(7);
head.right = three;
head.left = second;
second.right = five;
second.left = four;
three.right = seven;
three.left = six;
System.out.println("深度优先遍历的结果----");
new Traverse().deepTranverse(head);
System.out.println("广度优先遍历的结果---");
new Traverse().broadTranverse(head);
}

- 深度优先遍历代码
public void deepTranverse(TreeNode root) {
Stack<TreeNode> stack = new Stack<>();
stack.push(root);
while (!stack.isEmpty()) {
TreeNode node = stack.pop();
System.out.println(node.data);
if (node.left != null) {
stack.push(node.left);
}
if (node.right != null) {
stack.push(node.right);
}
}
}
- 广度优先遍历代码
public void broadTranverse(TreeNode root) {

Queue<TreeNode> queue = new LinkedList<>();
queue.add(root);
while (!queue.isEmpty()) {
TreeNode node = queue.poll();
System.out.println(node.data);
if (node.right != null) {
queue.add(node.right);
}
if (node.left != null) {
queue.add(node.left);
}
}
}

}

  

 

以上是关于Java 深度遍历和广度优先遍历的主要内容,如果未能解决你的问题,请参考以下文章

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

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

Java实现图的深度和广度优先遍历算法

c语言图的遍历,邻接表存储,深度,广度优先遍历

Java数据结构54:图的深度优先遍历与广度优先遍历数据结构课程设计

介绍下深度优先遍历和广度优先遍历,如何实现?