用遞迴方式實現二叉樹先序、中序、後序遍歷
阿新 • • 發佈:2019-01-30
先序遍歷:中、左、右
中序遍歷:左、中、右
後序遍歷:左、右、中
比如下面這科樹
1
2 34 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