import java.util.*;
import java.awt.*;class Binary_sort_tree
{
bnodetp bst;
boolean found=false;
bnodetp f=null;
String errorMessage=null;
Vector bnodetpVector=new Vector();
Vector cenciVector=new Vector();
public Binary_sort_tree()
{
bst=null;
errorMessage=null;
} public bnodetp srch_bstree(bnodetp bst,int k)//查找节点
{
found=false;
if(bst==null)
{
found=false;
return f;
}
else if(bst.key==k)
{
found=true;
f=bst;
return(bst);
}
else if(k<bst.key)
{
f=bst;
return(srch_bstree(bst.lchild,k));
}
else
{
f=bst;
return(srch_bstree(bst.rchild,k));
}
} public void ins_bstree(int k) //插入节点
{
bnodetp s=new bnodetp();
s.key=k;
s.lchild=null;
s.rchild=null; if(bst==null)
{
bst=s;
}
else if(k<f.key)
{
f.lchild=s;
}
else if(k>f.key)
{
f.rchild=s;
}
else
{
if(f.lchild!=null)
{
f=f.lchild;
} while(f.rchild!=null)
{
f=f.rchild;
}
f.rchild=s;
}
} public void inorder(bnodetp bst)//中序遍历二叉树
{
if(bst!=null)
{
inorder(bst.lchild);
visit(bst);
inorder(bst.rchild);
}
} public void visit(bnodetp bst)
{
//自己加入需要的代码
} public void cenciorder(bnodetp bst) //按树的层次遍历二叉树
{
if(bst!=null)
{
bnodetpVector.addElement(bst);
}
while(!bnodetpVector.isEmpty())
{
bnodetp temp=(bnodetp)bnodetpVector.elementAt(0);
bnodetpVector.removeElementAt(0);
//加入所需的代码
if(temp.lchild!=null)
{
bnodetpVector.addElement(temp.lchild);
}
if(temp.rchild!=null)
{
bnodetpVector.addElement(temp.rchild);
}
}
} public void del_bstree(bnodetp bst,int k)//删除节点
{
bnodetp p=srch_bstree(bst,k);
if(!found)
{
errorMessage="不存在该节点";
return;
}
if(p.lchild==null||p.rchild==null)
{
if(delf!=null)
{
if(delf.lchild==p&&p.lchild!=null)
{
delf.lchild=p.lchild;
}
else if(delf.lchild==p&&p.rchild!=null)
{
delf.lchild=p.rchild;
}
else if(delf.rchild==p&&p.lchild!=null)
{
delf.rchild=p.lchild;
}
else if(delf.rchild==p&&p.rchild!=null)
{
delf.rchild=p.rchild;
} if(delf.lchild==p&&p.lchild==null&&p.rchild==null)
{
delf.lchild=null;
}
if(delf.rchild==p&&p.lchild==null&&p.rchild==null)
{
delf.rchild=null;
} else
{
if(p.lchild!=null&&p.rchild==null)
{
this.bst=p.lchild;
}
if(p.rchild!=null&&p.lchild==null)
{
this.bst=p.rchild;
}
if(p.lchild==null&&p.rchild==null)
{
this.bst=null;
}
}
if(p.lchild!=null&&p.rchild!=null)
{
bnodetp q=p;
bnodetp s=p.lchild;
while(s.rchild!=null)
{
q=s;
s=s.rchild;
}
p.key=s.key;
if(q!=p)
{
q.rchild=s.rchild;
}
else
{
q.lchild=s.lchild;
}
}
}class bnodetp {
int key;
bnodetp lchild,rchild; public bnodetp()
{
}}
import java.awt.*;class Binary_sort_tree
{
bnodetp bst;
boolean found=false;
bnodetp f=null;
String errorMessage=null;
Vector bnodetpVector=new Vector();
Vector cenciVector=new Vector();
public Binary_sort_tree()
{
bst=null;
errorMessage=null;
} public bnodetp srch_bstree(bnodetp bst,int k)//查找节点
{
found=false;
if(bst==null)
{
found=false;
return f;
}
else if(bst.key==k)
{
found=true;
f=bst;
return(bst);
}
else if(k<bst.key)
{
f=bst;
return(srch_bstree(bst.lchild,k));
}
else
{
f=bst;
return(srch_bstree(bst.rchild,k));
}
} public void ins_bstree(int k) //插入节点
{
bnodetp s=new bnodetp();
s.key=k;
s.lchild=null;
s.rchild=null; if(bst==null)
{
bst=s;
}
else if(k<f.key)
{
f.lchild=s;
}
else if(k>f.key)
{
f.rchild=s;
}
else
{
if(f.lchild!=null)
{
f=f.lchild;
} while(f.rchild!=null)
{
f=f.rchild;
}
f.rchild=s;
}
} public void inorder(bnodetp bst)//中序遍历二叉树
{
if(bst!=null)
{
inorder(bst.lchild);
visit(bst);
inorder(bst.rchild);
}
} public void visit(bnodetp bst)
{
//自己加入需要的代码
} public void cenciorder(bnodetp bst) //按树的层次遍历二叉树
{
if(bst!=null)
{
bnodetpVector.addElement(bst);
}
while(!bnodetpVector.isEmpty())
{
bnodetp temp=(bnodetp)bnodetpVector.elementAt(0);
bnodetpVector.removeElementAt(0);
//加入所需的代码
if(temp.lchild!=null)
{
bnodetpVector.addElement(temp.lchild);
}
if(temp.rchild!=null)
{
bnodetpVector.addElement(temp.rchild);
}
}
} public void del_bstree(bnodetp bst,int k)//删除节点
{
bnodetp p=srch_bstree(bst,k);
if(!found)
{
errorMessage="不存在该节点";
return;
}
if(p.lchild==null||p.rchild==null)
{
if(delf!=null)
{
if(delf.lchild==p&&p.lchild!=null)
{
delf.lchild=p.lchild;
}
else if(delf.lchild==p&&p.rchild!=null)
{
delf.lchild=p.rchild;
}
else if(delf.rchild==p&&p.lchild!=null)
{
delf.rchild=p.lchild;
}
else if(delf.rchild==p&&p.rchild!=null)
{
delf.rchild=p.rchild;
} if(delf.lchild==p&&p.lchild==null&&p.rchild==null)
{
delf.lchild=null;
}
if(delf.rchild==p&&p.lchild==null&&p.rchild==null)
{
delf.rchild=null;
} else
{
if(p.lchild!=null&&p.rchild==null)
{
this.bst=p.lchild;
}
if(p.rchild!=null&&p.lchild==null)
{
this.bst=p.rchild;
}
if(p.lchild==null&&p.rchild==null)
{
this.bst=null;
}
}
if(p.lchild!=null&&p.rchild!=null)
{
bnodetp q=p;
bnodetp s=p.lchild;
while(s.rchild!=null)
{
q=s;
s=s.rchild;
}
p.key=s.key;
if(q!=p)
{
q.rchild=s.rchild;
}
else
{
q.lchild=s.lchild;
}
}
}class bnodetp {
int key;
bnodetp lchild,rchild; public bnodetp()
{
}}
解决方案 »
- 问一个关于JAVA 线程throws InterruptedException 的基础问题
- 绝对头痛的一个功能,高手请进
- \r \n 区别心得
- 至急:JMF编写的东西怎么能嵌入到网页中?在线等
- 这是个UDP传送数据的程序,每一次运行都说java.net.BindException: Address already in use....这样的异常
- JSP 连接 MySql的问题
- 迎风跃起转体360度裸跪做过的兄弟姐妹 (swing,如解决愿再散300分)
- 关于JavaWebStudio环境变量的问题
- 如何将Integer.toHexString()返回的字符串变成0x开头的16进制整型?
- 求助 一个很神奇的问题
- 在ms-dos中用javac调试java.很多东西比如java_home,classpath等如何设置?
- 一个关于j2sdk设置的问题!!!
* Title:
* Description:
* Copyright: Copyright (c) 2002
* Company: fanchina
* @author: liwei
* @Create date: 2002/02/21
* @version 1.0
*/public class JtreeEvents extends JApplet
{
private String sParent;//param from jsp
private String sMemberID;//param from jsp
private String sBflag;//param from jsp
private int iMaxNumber;//param from jsp
private String sParentArray[];
private String sMemberIDArray[];
private String sBflagArray[];
private String sMaxNumber;
JTree tree;
JTextField jtf; public JtreeEvents() {
getRootPane().putClientProperty("defeatSystemEventQueueCheck",
Boolean.TRUE);
}
public void init()
{
int i=0;
try
{ sParent=getParameter("sParent").trim() ;
sMemberID=getParameter("sMemberID").trim() ;
sBflag=getParameter("sBflag").trim() ;
sMaxNumber=getParameter("sMaxNumber").trim() ; iMaxNumber=Integer.parseInt(sMaxNumber);
sParentArray=new String[iMaxNumber];
sMemberIDArray=new String[iMaxNumber];
sBflagArray=new String[iMaxNumber]; SetArray(sParentArray);
SetArray(sMemberIDArray);
SetArray(sBflagArray); StringTokenizer st;
st=new StringTokenizer(sParent,",");
while(st.hasMoreTokens() && i<iMaxNumber)
sParentArray[i++]=st.nextToken().trim();
st=new StringTokenizer(sMemberID,",");
i=0;
while(st.hasMoreTokens() &&i<iMaxNumber)
sMemberIDArray[i++]=st.nextToken().trim();
st=new StringTokenizer(sBflag,",");
i=0;
while(st.hasMoreTokens() &&i<iMaxNumber)
sBflagArray[i++]=st.nextToken().trim(); UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); Container contentPane=getContentPane();
contentPane.setLayout(new BorderLayout()); DefaultMutableTreeNode top = new DefaultMutableTreeNode(sMemberIDArray[0]+":"+sBflagArray[0]);
SpreadNode(sMemberIDArray[0],top); tree = new JTree(top); tree.setCellRenderer(new myCellRenderer()); int v=ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED;
int h=ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED; JScrollPane jsp =new JScrollPane(tree,v,h); contentPane.add(jsp,BorderLayout.CENTER); JButton PersonalInformation = new JButton("PersonalInformation"); JPanel PerPane=new JPanel();
PerPane.setBackground(Color.blue) ;
PerPane.setLayout(new BorderLayout()) ;
PerPane.add(PersonalInformation,BorderLayout.CENTER); contentPane.add(PerPane,BorderLayout.SOUTH); PersonalInformation.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
PersonalInformation();
}
}
); tree.addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent me)
{
doMouseClicked(me);
}
}
);
}
catch(Exception e)
{
} }
void SpreadNode(String l_sMemberID,DefaultMutableTreeNode l_tNode)
{
for(int i=1;i<iMaxNumber;i++)
{
if(sParentArray[i].compareTo(l_sMemberID)==0 )
{
DefaultMutableTreeNode child = new DefaultMutableTreeNode(sMemberIDArray[i]+":"+sBflagArray[i]);
l_tNode.add(child);
SpreadNode(sMemberIDArray[i],child);
} } } void PersonalInformation()
{
int ifirst,ilast;
String slink;
String sTemp;
try
{
TreePath tp = tree.getSelectionPath();
if (tp!=null)
{
sTemp=tp.toString() ;
ifirst=sTemp.indexOf ("[");
ilast=sTemp.lastIndexOf("]");
slink=sTemp.substring(ifirst+1,ilast);
ilast=slink.lastIndexOf(",");
slink=slink.substring(ilast+1);
ilast=slink.lastIndexOf(":") ;
slink=slink.substring(0,ilast) ;
slink=slink.trim(); AppletContext ac=getAppletContext();
URL url=getCodeBase();
URL u=new URL(url.toString()+"info.jsp?txtMemberID="+slink);
ac.showDocument(u,"_blank");
}
}
catch(Exception e)
{
}
} //after clicking ,the node is added to the clicked node
void doMouseClicked(MouseEvent me)
{
/*int ifirst,ilast;
String slink;
String sTemp;
try
{
TreePath selectionPath = tree.getSelectionPath();
if (selectionPath!=null)
{
sTemp=selectionPath.toString() ;
ifirst=sTemp.indexOf ("[");
ilast=sTemp.lastIndexOf("]");
slink=sTemp.substring(ifirst+1,ilast);
ilast=slink.lastIndexOf(",");
slink=slink.substring(ilast+1);
ilast=slink.lastIndexOf(":") ;
slink=slink.substring(0,ilast) ;
slink=slink.trim(); DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) selectionPath.getLastPathComponent() ;
if(selectedNode.isLeaf() )
{
for(int i=1;i<iMaxNumber;i++)
{
if(sParentArray[i].compareTo(slink)==0)
{
((DefaultTreeModel)tree.getModel()).insertNodeInto(new DefaultMutableTreeNode(sMemberIDArray[i]+":"+sBflagArray[i]),selectedNode,selectedNode.getChildCount() );
}
}
} } }
catch(Exception e)
{
}*/
} void SetArray(String sArray[])
{
for(int i=0;i<sArray.length;i++)
{
sArray[i] = "";
}
} class myCellRenderer extends JLabel implements TreeCellRenderer
{
myCellRenderer(){setOpaque(true);} public java.awt.Component getTreeCellRendererComponent(JTree tree,Object value,boolean selected,boolean expanded,boolean leaf,int row,boolean hasFocus)
{
try
{
StringBuffer text=new StringBuffer();
if(expanded) text.append("*");
if(leaf) text.append("*");
// if(hasFocus) text.append("H:"); // text.append("["+row+"]"+"->");
text.append(value.toString()); setBackground(selected?Color.blue:Color.white);
setForeground(selected?Color.white:Color.blue ); setText(text.toString() );
}
catch(Exception e)
{
}
return this;
}
}}