一 概念
1 二叉树的3个基本组成单元:根节点、左子树和右子树。
2 先序遍历:
若二叉树为空,则空操作;否则
- 访问根节点;
- 先序遍历左子树;
- 先序遍历右子树;
3 中序遍历:
若二叉树为空,则空操作;否则
- 中序遍历左子树;
- 访问根节点;
- 中序遍历右子树;
4 后序遍历:
若二叉树为空,则空操作;否则
- 后序遍历左子树;
- 后序遍历右子树;
- 访问根节点;
二 代码
1 声明根节点
public class TreeNode {
public int data;
public TreeNode leftChild;
public TreeNode rightChild;
public TreeNode(int data){
this.data = data;
}
}
2 创建二叉树
public static TreeNode createBinaryTree(LinkedList<Integer> list){
TreeNode node = null;
if(list == null || list.isEmpty()){
return null;
}
Integer data = list.removeFirst();
if(data!=null){
node = new TreeNode(data);
node.leftChild = createBinaryTree(list);
node.rightChild = createBinaryTree(list);
}
return node;
}
3 二叉树先序遍历
public static void preOrderTraveral(TreeNode node){
if(node == null){
return;
}
System.out.print(node.data+" ");
preOrderTraveral(node.leftChild);
preOrderTraveral(node.rightChild);
}
4 二叉树中序遍历
public static void inOrderTraveral(TreeNode node){
if(node == null){
return;
}
inOrderTraveral(node.leftChild);
System.out.print(node.data+" ");
inOrderTraveral(node.rightChild);
}
5 二叉树后序遍历
public static void postOrderTraveral(TreeNode node){
if(node == null){
return;
}
postOrderTraveral(node.leftChild);
postOrderTraveral(node.rightChild);
System.out.print(node.data+" ");
}
6 测试
二叉树:

public static void main(String[] args) {
LinkedList<Integer> inputList1 = new LinkedList<>(Arrays.asList(new Integer[]{1,2, 3, null, null, 4,5, null, 6,null, null, 7,null,null}));
TreeNode treeNode = createBinaryTree(inputList1);
System.out.println("前序遍历:");
preOrderTraveral(treeNode);
System.out.println("\n"+"中序遍历:");
inOrderTraveral(treeNode);
System.out.println("\n"+"后序遍历:");
postOrderTraveral(treeNode);
}
7 结果
前序遍历:
1 2 3 4 5 6 7
中序遍历:
3 2 5 6 4 7 1
后序遍历:
3 6 5 7 4 2 1
ps:借鉴链接:二叉树的前中后序遍历(递归遍历)
919





