fw -BFS & DFS tree-2-013年12月17日17:56:33

本文介绍了一种使用Java实现的二叉树结构,并详细解释了如何通过递归方式完成先序遍历以及深度优先搜索(DFS)和广度优先搜索(BFS)。此外还提供了完整的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package test_kepler;

public class Treeandgraph {
	
	class Node
	{
		public Node left_child;
		public Node right_child;
		public String data;
		public Boolean isvisted;
		public Node()
		{
			left_child = null;
			right_child = null;
			data = null;
			isvisted = false;
		}
	};
	
	 Node buildTree()
	{
		Node root = new Node();
		root.data = "root";
		Node t1 = new Node();
		t1.data = "t1";
		Node t2 = new Node();
		t2.data = "t2";
		Node t3 = new Node();
		t3.data = "t3";
		Node t4 = new Node();
		t4.data = "t4";
		Node t5 = new Node();
		t5.data = "t5";
		
		root.left_child = t1;
		root.right_child = t2;
		t1.left_child = t3;
		t1.right_child = t4;
		t2.left_child = t5;
		
		return root;
	}
	//head - right - left;
	static void traverse_pre_order(Node nd)
	{
		if(nd != null)
		{
			System.out.print(nd.data+" ->> ");
			traverse_pre_order(nd.right_child);
			traverse_pre_order(nd.left_child);
		}
	}
	static void DFS(Node nd)
	{
		nd.isvisted = true;
		System.out.print(nd.data+" ->> ");
		if(nd!=null)
		{
			
			if(nd.left_child!=null && nd.left_child.isvisted == false)
			{
				DFS(nd.left_child);
			}
			
			if(nd.right_child!=null && nd.right_child.isvisted == false)
			{
				DFS(nd.right_child);
			}
		}
	}
	public static void BFS(Node root)
	{
		 qbytwostc testq = new qbytwostc<Node>();
		 testq.enQueue(root);
		 while(!testq.isEmpty())
		 {
			 Node getout = (Node) testq.dequeue();
			 if(getout.isvisted == false)
			 {
				 getout.isvisted = true;
				 
				 System.out.print(getout.data+" ->> ");
				 
				 if(getout.right_child!=null)
				 {
					 testq.enQueue(getout.right_child);
				 }
				 if(getout.left_child!=null)
				 {
					 testq.enQueue(getout.left_child);
				 }
			 } 
		 }
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Treeandgraph tg = new Treeandgraph();
		Node root = tg.buildTree();
		traverse_pre_order(root);
		System.out.println("this is the DFS");
		BFS(root);
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值