二叉树的练习

本文提供了一系列二叉树的练习,包括使用广度优先和深度优先算法求解二叉树的层数、节点总数及叶节点数,以及找出树中的最大值和最小值。每个问题都需要通过两种不同方式实现。
摘要由CSDN通过智能技术生成

一、实验目的及要求

以下练习都需要用广度优先和深度优先算法实现一遍。
1:给定一棵二叉树,求二叉树的层数
2:给定一棵二叉树,求整棵树节点个数以及叶结点的个数
3:将树结点的数据域声明为int型,然后求出一棵树的最大值,最小值
(以上每一个题目的子题目都要用广度优先和深度优先实现)

二、实验内容及步骤

1、求二叉树的层数

1import circleSqQueue.QueueDemo;
import java.util.Scanner;
class TreeNode 
{
   
	int data;  //结点的数据域
	TreeNode lchild;  //左孩子域
	TreeNode rchild;  //右孩子域
	private TreeNode rootl;
	TreeNode()
	{
   
		this.lchild = null;
		this.rchild = null;
	}
	TreeNode(int data)
	{
   
		this.data = data;
		this.lchild = null;
		this.rchild = null;
	}
	int getData()
	{
   
		return data;
	}
}
public class TreeDemo {
   
	static void PreTranverse(TreeNode T) //先根遍历
	{
   
		if (T != null)
		{
   
			System.out.print(T.data+" ");
			PreTranverse(T.lchild);
			PreTranverse(T.rchild);
		}			
	}	
	static void InTranverse(TreeNode T)  //中根遍历
	{
   
		if (T != null)
		{
   
			InTranverse(T.lchild);
			System.out.print(T.data+" ");
			InTranverse(T.rchild);
		}			
	}	
	static void PostTranverse(TreeNode T)   //后根遍历
	{
   
		if (T != null)
		{
   
			PostTranverse(T.lchild);
			PostTranverse(T.rchild);
			System.out.print(T.data+" ");
		}			
	}
	static void LevelTranverse(TreeNode rootl)//层次遍历,需引入变量
	{
   
		TreeNode T=rootl; //外部输入
		if(T!=null) {
   
			LinkQueue L=new LinkQueue();
			L.offer(T);
			while(!L.isEmpty()) {
   
				T=(TreeNode)L.poll();
				System.out.print(T.data+" ");
				if(T.lchild!=null)
					L.offer(T.lchild);
				if(T.rchild!=null)
					L.offer(T.rchild);
			  }
		  }
	    }
	static TreeNode BuildbyLevel
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值