package tree;
public class Tree {
private Tnode root;
public Tree(){
root=null;
}
public Tnode find(int key){ //查找节点的方法
Tnode current=root; //定义当前节点为头结点
if(current.iDate!=key){ //比对查找关键字
if(key<current.iDate){ //如果小于,则进入左子树
current=current.leftChild; //将左节点赋给当前节点
}
else{
current=current.rightChild; //将右节点赋给当前节点
}
if(current==null){ //判断当前节点是否为空
return null;
}
}
System.out.println("所查找的节点的数据是:"+current.dDate);
return current;
}
public void insert(int id, double dd){ //插入节点的方法
Tnode newTnode= new Tnode(); //初始化一个新节点
newTnode.iDate=id;
newTnode.dDate=dd;
if(root==null){ //看根节点是否为空
root=newTnode;
System.out.println("根节点插入!");
}
else{
Tnode current=root; //将根节点赋给当前节点
Tnode parent;
while(true){
parent=current;
if(id<current.iDate){ //比对关键字,小于则进入左节点
current=current.leftChild;
if(current==null){ //判断当前节点是否为空,是!则直接赋值新节点
parent.leftChild=newTnode;
System.out.println("插入的节点关键字是:"+parent.leftChild.iDate);
return;
}
}
else{
current=current.rightChild;
if(current==null){ //判断当前节点是否为空
parent.rightChild=newTnode;
System.out.println("插入节点关键字是:"+parent.rightChild.iDate);
return;
}
}
}
}
System.out.println("根节点的关键字是:"+root.iDate);
}
public void inOrder(Tnode localRoot){ //利用递归对树进行遍历操作
if(localRoot!=null){
inOrder(localRoot.leftChild);
System.out.print(localRoot.iDate);
inOrder(localRoot.rightChild);
}
}
public boolean delete(int key){ //删除节点的方法
Tnode current=root;
Tnode parent=root;
boolean isLeftChild=true;
while(current.iDate!=key){ //寻找要删除的节点
parent=current;
if(key<current.iDate){ //判断是否去节点
isLeftChild=true; //标记节点为真
current=current.leftChild; //将左节点作为当前节点
}
else{ //是否去右节点
isLeftChild=false;
current=current.rightChild; //将右节点作为当前节点
}
}
if(current.leftChild==null&¤t.rightChild==null){ //当前节点的左右节点都为空
if(current==root){ //如果当前节点为根节点
root=null;
}
else if(isLeftChild){ //如果是左节点
parent.leftChild=null;
}
else{ //如果是右节点
parent.rightChild=null;
}
}
else if(current.rightChild==null){ //如果当前节点只有左节点
if(current==root){ //如果当前节点是根节点
root=current.leftChild; //将当前节点的右节点赋给当前节点
}
else if(isLeftChild){ //如果当前节点是一个左节点
parent.leftChild=current.leftChild; //将当前节点的左节点赋给当前节点的双亲节点的左节点
}
else{ //如果当前节点是一个右节点
parent.rightChild=current.leftChild;
}
}
else if(current.leftChild==null){ //如果当前节点只有右节点
if(current==root){
root=current.rightChild;
}
else if(isLeftChild){
parent.leftChild=current.rightChild;
}
else{
parent.rightChild=current.rightChild;
}
}
else{ //如果当前节点左右节点都有
Tnode successor=getSuccessor(current); //调用寻找其中序遍历时的后继节点的方法
if(current==root){
root=successor;
}
else if(isLeftChild){
parent.leftChild=successor;
}
else{
parent.rightChild=successor;
successor.leftChild=current.leftChild;
}
}
System.out.println("关键字为"+current.iDate+"的节点已被删除!");
return true;
}
private Tnode getSuccessor(Tnode delNode){ //寻找其中序遍历时的后继节点的方法
Tnode successorParent=delNode;
Tnode successor=delNode;
Tnode current=delNode.rightChild;
while(current!=null){
successorParent=successor;
successor=current;
current=current.leftChild;
}
if(successor==delNode.rightChild){
successorParent.leftChild=successor.rightChild;
successor.rightChild=delNode.rightChild;
}
return successor;
}
public void perOrder(Tnode localRoot){ //前序遍历
System.out.println(localRoot.iDate+" ");
perOrder(localRoot.leftChild);
perOrder(localRoot.rightChild);
}
public void postOrder(Tnode localRoot){ //后序遍历
postOrder(localRoot.leftChild);
postOrder(localRoot.rightChild);
System.out.println(localRoot.iDate+" ");
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
Java Web开发之道 光盘源代码1 (1943个子文件)
a.avi 67.44MB
ConnDB.java.bak 2KB
POITest.class 6KB
DisplyEmail.class 5KB
Tdbb.class 5KB
WordTest.class 3KB
WordTest.class 3KB
Tree.class 3KB
connDB.class 3KB
DealAttach.class 3KB
ConnDB.class 3KB
DB.class 3KB
ZIPArchive.class 2KB
JDBConnection.class 2KB
ReceiveEmail.class 2KB
Conn.class 2KB
Conn.class 2KB
MrRecord.class 2KB
InfoManger.class 2KB
ConnDB.class 2KB
ConnDB.class 2KB
ReadCookie.class 2KB
displayTag.class 2KB
displayTag.class 2KB
ServletPool.class 2KB
UserDAO.class 2KB
ExportExcelServlet.class 2KB
ZIPArchive.class 2KB
HibernateSessionFactory.class 2KB
PutList.class 2KB
Stack.class 2KB
MergeS.class 2KB
WriteCookie.class 2KB
UserInfo.class 2KB
Hash.class 2KB
Clist.class 2KB
Conn.class 2KB
Clist.class 2KB
Heap.class 2KB
Hanoi.class 2KB
MakeError.class 2KB
TestServlet.class 2KB
PutMap.class 2KB
JDBC.class 2KB
ChangeSuffix.class 1KB
MySHA.class 1KB
Fbo.class 1KB
MD5.class 1KB
FromHashMapQuery.class 1KB
Tp.class 1KB
SelS.class 1KB
AddUser.class 1KB
Test.class 1KB
Queue.class 1KB
HeapS.class 1KB
Test.class 1KB
TestProperties.class 1KB
Shell.class 1KB
NoCacheFilter.class 1KB
Feb.class 1KB
WriteStudent.class 1KB
AppendAction.class 1KB
FromArrayQuery.class 1KB
Select.class 1KB
StringTrans.class 1KB
StringTrans.class 1KB
StringTrans.class 1KB
ReadStudent.class 1KB
SaveToHashMap.class 1KB
Sushu.class 1KB
Insert.class 1KB
BigBracket.class 1KB
AccessTestPage.class 1KB
chStr.class 1KB
StackTest.class 1KB
RightPage.class 1KB
Bubble.class 1KB
BinS.class 1KB
Test$MyFunction.class 1KB
ChStr.class 1KB
PostBeanFactory.class 1KB
HouseTotalMoney.class 1KB
TMD5.class 1KB
Hmhc.class 1KB
Test2.class 1KB
TmySHA.class 1KB
StudentInfo.class 1KB
GenericClass.class 1KB
StrongType.class 1KB
SaveToArray.class 1KB
TwoArrayMemory.class 994B
Fen.class 978B
ForwardAction.class 977B
OneArrayMemory.class 975B
QueTest.class 964B
Test.class 958B
HelloWorld.class 950B
Wflower.class 944B
Manger.class 916B
Hxin.class 878B
共 1943 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
JANESTAR
- 粉丝: 71
- 资源: 12
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页