一、问题
1
2 3
4 5 6
7
输出该树前序、中序、后序遍历的结果
二、代码
Java
@Data
public class Node {
private Integer id;
private Node left;
private Node right;
public Node(Integer id) {
this.id = id;
}
public Node(Integer id, Node left, Node right) {
this.id = id;
this.left = left;
this.right = right;
}
}
@Data
public class Tree {
private Node root;
/**
* 建树 【V80】
*
* 1
* 2 3
* 4 5 6
* 7
*/
public void build() {
Node node7 = new Node(7);
Node node6 = new Node(6);
Node node5 = new Node(5, node7, null);
Node node4 = new Node(4);
Node node3 = new Node(3, node5, node6);
Node node2 = new Node(2, null, node4);
root = new Node(1, node2, node3);
}
/**
* 前序遍历(递归)【V40】
*/
public void recursivePreOrder(Node root) {
if (root == null) {
return;
}
System.out.print(root.getId() + " ");
recursivePreOrder(root.getLeft());
recursivePreOrder(root.getRight());
}
/**
* 中序遍历(递归)【V40】
*/
public void recursiveMidOrder(Node root) {
if (root == null) {
return;
}
recursiveMidOrder(root.getLeft());
System.out.print(root.getId() + " ");
recursiveMidOrder(root.getRight());
}
/**
* 后序遍历(递归)【V40】
*/
public void recursivePostOrder(Node root) {
if (root == null) {
return;
}
recursivePostOrder(root.getLeft());
recursivePostOrder(root.getRight());
System.out.print(root.getId() + " ");
}
public static void main(String[] args) {
Tree tree = new Tree();
tree.build();
System.out.print("前序:");
tree.recursivePreOrder(tree.getRoot());
System.out.print("\n中序:");
tree.recursiveMidOrder(tree.getRoot());
System.out.print("\n后序:");
tree.recursivePostOrder(tree.getRoot());
System.out.println("\n");
}
}
运行结果
前序:1 2 4 3 5 7 6
中序:2 4 1 7 5 3 6
后序:4 2 7 5 6 3 1