实现二叉树先序、中序、后续遍历
import java.util.Scanner;
public class Tree {
public static void main(String[] args) {
Binarytree tt=new Binarytree();
System.out.println("请输入树(前序),节点用空格隔开,空子树输入0");
tt.set(tt.getroot());
System.out.print("前序遍历:");
tt.preOrderTraversal(tt.getroot());
System.out.println();
System.out.print("中序遍历:");
tt.inOrderTraversal(tt.getroot());
System.out.println();
System.out.print("后序遍历:");
tt.postOrderTraversal(tt.getroot());
}
}
class Binarytree{
Scanner in=new Scanner(System.in);
private Node root;
private int n=-1;
public Binarytree() {
root=new Node(0);
}
public Node getroot() {
return root;
}
class Node{
int data;
Node lchild,rchild;
public Node(int data) {
this.data=data;
}
}
public Node set(Node node) {
n=in.nextInt();
if(n==0) {
return null;
}else {
node.data=n;
node.lchild=set(new Node(0));
node.rchild=set(new Node(0));
return node;
}
}
public void preOrderTraversal(Node node){
if (node == null)
return;
System.out.print(node.data+" ");
preOrderTraversal(node.lchild);
preOrderTraversal(node.rchild);
}
public void inOrderTraversal(Node node){
if (node == null)
return;
inOrderTraversal(node.lchild);
System.out.print(node.data+" ");
inOrderTraversal(node.rchild);
}
public void postOrderTraversal(Node node){
if (node == null)
return;
postOrderTraversal(node.lchild);
postOrderTraversal(node.rchild);
System.out.print(node.data+" ");
}
}
转载:https://blog.csdn.net/leangx86/article/details/101937809
查看评论