📄 binarytreechange.java
字号:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class TreeNode
{
public char data;
public TreeNode father,left, right;
public TreeNode(char d) { data=d;left=right=null; }
}
class BinaryTree
{
private String order,inorder;
private int i=0,j=0;
private char in[]=new char[40];
private TreeNode root;
public BinaryTree(String s)
{
order=s;
if(order.length()>0)
root=creattree();
}
public TreeNode creattree()
{
TreeNode p=null;
char str=order.charAt(i);
i++;
if(str!='@')
{
p=new TreeNode(str);
p.left=creattree();
p.right=creattree();
}
return p;
}
public void in_order(TreeNode p)
{
if(p!=null)
{
in_order(p.left);
in[j]=p.data;j++;
in_order(p.right);
}
}
public String pre_to_in(String order)
{
if(root!=null) in_order(root);
inorder=new String(in);
return inorder;
}
}
class MyWindow extends JFrame
{
JTextField pretext,intext;
JLabel prelabel,inlabel;
JButton change;
MyWindow(String s)
{
super(s);
setBounds(200,200,500,300);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pretext=new JTextField(40);
intext=new JTextField(40);
change=new JButton("转换并输出二叉树的中序遍历序列");
Container con=this.getContentPane();
con.setLayout(new FlowLayout());
con.add(new JLabel("请输入带空格的二叉树前序序列(以“@”为空)"));
con.add(pretext);
con.add(change);
con.add(new JLabel("二叉树的中序遍历序列输出"));
con.add(intext);
con.validate();
change.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String c=pretext.getText();
try
{
BinaryTree t=new BinaryTree(c);
String s=t.pre_to_in(c);
intext.setText(s);
}catch (StringIndexOutOfBoundsException q)
{
intext.setText("输入方式有误!!请重新确认后输入");
}
}
}
);
}
}
public class BinaryTreeChange
{
public static void main(String args[])
{
MyWindow win=new MyWindow("数据结构实验2-由先序遍历得到二叉树再得到中序遍历-040824229-赵禹晶");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -