二叉树主要输出是关于他的四种遍历(前,中,后,层次)
根据java数据结构,先建立一个节点类BinaryNode
代码参考《java数据结构》以及同学
class BinaryNode {
int data;//数据项
BinaryNode left, right;左右节点
public BinaryNode(int data, BinaryNode left, BinaryNode right) {
super();
this.data = data;
this.left = left;
this.right = right;
}
public BinaryNode(int data) {
this(data, null, null);
}
}
然后再有一个二叉树类来实现方法
class BinaryTree {
BinaryNode root;//根
public BinaryTree(BinaryNode root) {
super();
this.root = root;
}
public BinaryTree() {
this.root = null;
}
public void insert (int t){
insert(this.root,t);
}
public void insert(BinaryNode p,int t){//以二叉搜索树为例
if(this.root==null){
this.root=new BinaryNode(t);
}else if(p.data<t){
if(p.right==null){
p.right=new BinaryNode(t);
}else{
insert(p.right,t);
}
}else{
if(p.left == null){
p.left=new BinaryNode(t);
}else{
insert(p.left,t);//左的左
}
}
}
public String levelOrder(int n){
String str = "";
Queue<BinaryNode> q = new LinkedList<BinaryNode>();
if(this.root != null){
q.add(this.root);
}
while(!q.isEmpty()){
BinaryNode t = q.poll();
str += t.data+" ";
if (t.left != null) {
q.add(t.left);
} if (t.right != null) {
q.add(t.right);
}
}
return str;
}
}
主方法
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
while (cin.hasNext()) {
int n = cin.nextInt();
BinaryTree tree = new BinaryTree();
for(int i=0;i<n;i++){
tree.insert(cin.nextInt());
}
String str = tree.levleOrder(n);
System.out.println(str.substring(0, str.length()-1));
}
cin.close();
}
}