实现二叉树先序、中序、后续遍历
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+" "); } }