概述
这里写自定义目录标题
- 概念
- 源码实现
- 节点实体类定义
- 树定义
- 测试类实现
概念
BFS又称广度优先遍历,从树的根节点按照层级进行遍历
DFS又称深度优先遍历,包括先根遍历(先遍历根节点,其次左结点,最后右节点),中根遍历(先遍历左节点,其次根结点,最后右节点),后跟遍历(先遍历左节点,其次右结点,最后根节点)
源码实现
节点实体类定义
package com.cxk.tree;
public class TreeNode {
private String nodeName;
private TreeNode leftNode;
private TreeNode rightNode;
public TreeNode(String nodeName) {
this.nodeName = nodeName;
}
public String getNodeName() {
return nodeName;
}
public void setNodeName(String nodeName) {
this.nodeName = nodeName;
}
public TreeNode getLeftNode() {
return leftNode;
}
public void setLeftNode(TreeNode leftNode) {
this.leftNode = leftNode;
}
public TreeNode getRightNode() {
return rightNode;
}
public void setRightNode(TreeNode rightNode) {
this.rightNode = rightNode;
}
}
树定义
package com.cxk.tree;
import java.util.concurrent.LinkedBlockingQueue;
public class Tree {
private TreeNode root;
public Tree(TreeNode root) {
this.root = root;
}
public void bfs(){
bfs(this.root);
}
public void bfs(TreeNode node){
if(node == null)
return;
LinkedBlockingQueue<TreeNode> queue = new LinkedBlockingQueue<TreeNode>();
queue.add(node);
while(!queue.isEmpty()){
TreeNode peek = queue.peek();
System.out.println("NodeName : " + peek.getNodeName());
if(peek.getLeftNode() != null)
queue.add(peek.getLeftNode());
if(peek.getRightNode() != null)
queue.add(peek.getRightNode());
queue.remove();
}
}
public void dfs(){
dfs(this.root);
}
//先根遍历
public void dfs(TreeNode node){
if(node == null)
return;
System.out.println(node.getNodeName());
if(node.getLeftNode() != null)
dfs(node.getLeftNode());
if(node.getRightNode() != null)
dfs(node.getRightNode());
}
}
测试类实现
package com.cxk.tree;
public class MainTest {
public static void main(String [] args){
TreeNode node1 = new TreeNode("1");
TreeNode node2 = new TreeNode("2");
TreeNode node3 = new TreeNode("3");
TreeNode node4 = new TreeNode("4");
TreeNode node5 = new TreeNode("5");
node1.setLeftNode(node2);
node1.setRightNode(node3);
node2.setLeftNode(node4);
node2.setRightNode(node5);
Tree tree = new Tree(node1);
//tree.bfs();
tree.dfs();
}
}
最后
以上就是淡淡便当为你收集整理的二叉树的BFS 和 DFS 实现概念源码实现的全部内容,希望文章能够帮你解决二叉树的BFS 和 DFS 实现概念源码实现所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复