1. 程式人生 > >用遞迴方式實現二叉樹先序、中序、後序遍歷

用遞迴方式實現二叉樹先序、中序、後序遍歷

先序遍歷:中、左、右

中序遍歷:左、中、右

後序遍歷:左、右、中

比如下面這科樹

             1

        2       3

    4    5   6    7

package com.sangfor.tree;


public class Node {
	public int value;
	public Node left;
	public Node right;
	public Node(int value) {
		this.value = value;
	}
}

package com.sangfor.tree;

public class ForEachTree {
    public static void main(String[] args) {
    	Node node1 = new Node(1);
    	Node node2 = new Node(2);
    	Node node3 = new Node(3);
    	Node node4 = new Node(4);
    	Node node5 = new Node(5);
    	Node node6 = new Node(6);
    	Node node7 = new Node(7);
    	node1.left = node2;
    	node1.right = node3;
    	node2.left = node4;
    	node2.right = node5;
    	node3.left = node6;
    	node3.right = node7;
    	System.out.println("前序列遞迴");
    	priOrder(node1);
    	System.out.println();
    	System.out.println("中序列遞迴");
    	inOrder(node1);
    	System.out.println();
    	System.out.println("後序列遞迴");
    	posOrder(node1);
	}
    //前序列遞迴
    public static void priOrder(Node head) {
    	if (head == null) {
    		return;
    	}
    	System.out.print(head.value+"\t");
    	priOrder(head.left);
    	priOrder(head.right);
    }
    
    //中序列遞迴
    public static void inOrder(Node head) {
    	if (head == null) {
    		return;
    	}
    	inOrder(head.left);
    	System.out.print(head.value+"\t");
    	inOrder(head.right);
    }
    
    //後序列遞迴
    public static void posOrder(Node head) {
    	if (head == null) {
    		return;
    	}
    	posOrder(head.left);
    	posOrder(head.right);
    	System.out.print(head.value+"\t");
    }
}

執行結果
前序列遞迴
1	2	4	5	3	6	7	
中序列遞迴
4	2	5	1	6	3	7	
後序列遞迴
4	5	2	6	7	3	1