package Tree;
import java.util.Scanner;
public class Tree {
Scanner sc = new Scanner(System.in);//使用Scanner来接收键盘输入的结点数据
//初始化二叉树的根
CBTType InitTree() {
CBTType node = new CBTType();
System.out.println("请先输入根节点数据");
node.data = sc.next();
node.left = null;
node.right = null;
return node;
}
//添加结点
void AddTreeNode(CBTType node){
CBTType pnode = new CBTType();
CBTType parent = new CBTType();
String data;
int menusel;
System.out.println("输入二叉树几点数据:");
pnode.data = sc.next();
pnode.left = null;
pnode.right = null;
System.out.println("请输入该结点的父节点数据");
data = sc.next();
parent = TreeFindNode(node,data);
if(parent == null) {
System.out.println("未找到该父结点");
pnode = null;
return;
}
System.out.println("1.添加到该父节点的左子树");
System.out.println("2.添加到该父结点的右子树");
do {
menusel = sc.nextInt();
if(menusel == 1 || menusel == 2 || menusel == 0) {
switch(menusel){
case 0:
return;
case 1:
if(parent.left != null) {
System.out.println("左子树结点不为空");
}else {
parent.left = pnode;
}
break;
case 2:
if(parent.right != null) {
System.out.println("右子树结点不为空");
}else {
parent.right = pnode;
}
break;
default:
System.out.println("无效参数,请重新输入");
}
}
}while(menusel != 1 && menusel != 2 && menusel != 0);
}
//查找结点
CBTType TreeFindNode(CBTType node,String data) {
CBTType ptr;
if(node == null) {
return null;
}else {
if(node.data.equals(data)) {
return node;
}else {
if((ptr = TreeFindNode(node.left,data)) != null) {
return ptr;
}else if((ptr = TreeFindNode(node.right,data)) != null) {
return ptr;
}else {
return null;
}
}
}
}
//获取左子树
CBTType TreeLeftNode(CBTType node) {
if(node != null) {
return node.left;
}else {
return null;
}
}
//获取右子树
CBTType TreeRightNode(CBTType node) {
if(node != null) {
return node.right;
}else {
return null;
}
}
//判断空树
boolean TreeIsEmpty(CBTType node)
{
if(node != null) {
return false;
}else {
return true;
}
}
//计算二叉树深度
int TreeDepth(CBTType node) {
int depleft,depright;
if(node == null) {
return 0;
}else {
depleft = TreeDepth(node.left);
depright = TreeDepth(node.right);
if(depleft > depright) {
return depleft + 1;
}else {
return depright + 1;
}
}
}
//清空二叉树
void ClearTree(CBTType node) {
if(node != null) {
ClearTree(node.left);
ClearTree(node.right);
node = null;
}
}
//显示结点数据
void TreeNodeData(CBTType node) {
System.out.println(node.data);//打印当前结点的数据
}
//二叉树的遍历
//1.层序遍历
//2.先序遍历DLR,中序遍历LDR,后序遍历RDL
//层序遍历
void LevelTree(CBTType node) {
CBTType p;
CBTType[] q = new CBTType[CBTType.MAXLEN];//定义一个顺序队列
int head = 0,tail = 0;
if(node != null) {
tail = (tail + 1)%CBTType.MAXLEN;
q[tail] = node;
}//将二叉树根引用进队
while(head != tail) {
head = (head + 1)%CBTType.MAXLEN;
p = q[head];
TreeNodeData(p);
if(p.left != null) {
tail = (tail + 1)%CBTType.MAXLEN;
q[tail] = p.left;
}
if(p.right != null) {
tail = (tail + 1)%CBTType.MAXLEN;
q[tail] = p.right;
}
}
}
//先序遍历
void DLRTree(CBTType node) {
TreeNodeData(node);
DLRTree(node.left);
DLRTree(node.right);
}
//中序遍历
void LDRTree(CBTType node) {
LDRTree(node.left);
TreeNodeData(node);
LDRTree(node.right);
}
//后序遍历
void LRDTree(CBTType node) {
LRDTree(node.left);
LRDTree(node.right);
TreeNodeData(node);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
eclipse-java-workspace.rar_java常用算法集工作间打包
共142个文件
class:60个
java:58个
classpath:8个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 196 浏览量
2022-09-24
08:18:22
上传
评论
收藏 76KB RAR 举报
温馨提示
包含了Java常用的算法,数据结构,基础数学,经典例题等
资源推荐
资源详情
资源评论
收起资源包目录
eclipse-java-workspace.rar_java常用算法集工作间打包 (142个子文件)
Tree.class 4KB
SequentialList.class 3KB
LinkList.class 3KB
SanSeQi.class 2KB
XiPai.class 2KB
XinLangAndXinNiang.class 2KB
EightQueen.class 2KB
MaTaQiPan.class 2KB
SequentialQueue.class 2KB
ChangShengJiangJun.class 2KB
Stack.class 2KB
ChengFa.class 2KB
Test.class 2KB
ZhengTaiFenBu.class 1KB
YiWei.class 1KB
ErWei.class 1KB
WuJiaGongJing.class 1KB
ShunXu.class 1KB
JosephProblem.class 1KB
Simple.class 1KB
HanNuoTa.class 1KB
FenJieZhiYinShu.class 1KB
Perfect.class 1KB
ZiShou.class 1KB
JunYunFenBu.class 1KB
ChickenAndRabbit.class 1KB
BaiQianMaiBaiJi.class 1KB
LeapYear.class 1KB
Su.class 1KB
Gcd.class 1KB
JieCheng.class 985B
MonteCarloPai.class 916B
Random1.class 862B
Random2.class 841B
Fibonacci.class 774B
HuiWen.class 733B
LinearList.class 702B
EinsteinSteps.class 701B
HouZiChiTao.class 699B
Lcm.class 682B
GraphMatrix.class 554B
SLType.class 459B
FuShu.class 451B
SQType.class 413B
StackType.class 404B
LLType.class 392B
Graph.class 385B
CBTType.class 373B
Coordinate.class 370B
Data1.class 315B
Data2.class 303B
Card.class 288B
Data4.class 287B
Data3.class 287B
JiTuTongLong.class 271B
QingWaGuoHe.class 268B
JieCheng.class 267B
TenAndHalf.class 265B
ChuFa.class 264B
JiaYinBi.class 259B
.classpath 301B
.classpath 301B
.classpath 301B
.classpath 301B
.classpath 301B
.classpath 301B
.classpath 301B
.classpath 301B
Tree.java 4KB
LinkList.java 2KB
EightQueen.java 2KB
XiPai.java 2KB
SequentialList.java 2KB
SanSeQi.java 2KB
MaTaQiPan.java 2KB
SequentialQueue.java 1KB
XinLangAndXinNiang.java 1KB
ChangShengJiangJun.java 1KB
Stack.java 1KB
Simple.java 942B
ZhengTaiFenBu.java 866B
ChengFa.java 787B
Gcd.java 777B
WuJiaGongJing.java 741B
ErWei.java 738B
YiWei.java 708B
Test.java 661B
ShunXu.java 657B
JunYunFenBu.java 632B
JosephProblem.java 623B
ChickenAndRabbit.java 523B
LeapYear.java 513B
ZiShou.java 508B
FenJieZhiYinShu.java 507B
Su.java 489B
Perfect.java 478B
HanNuoTa.java 453B
BaiQianMaiBaiJi.java 405B
GraphMatrix.java 400B
MonteCarloPai.java 390B
共 142 条
- 1
- 2
资源评论
JonSco
- 粉丝: 67
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功