java算法——二叉树遍历

实现二叉树先序、中序、后续遍历

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+" ");
	}
}
发布了11 篇原创文章 · 获赞 7 · 访问量 1191

猜你喜欢

转载自blog.csdn.net/leangx86/article/details/101937809