前言
发现大厂面试总是喜欢从树入手进行考察面试者,这里总结一下二叉树的前序遍历、中序遍历、后序遍历的特征。
1.前中后序取决于 ---- 读根节点的顺序
- 比如说现在有个二叉树如下:
【如果子节点也是一个根节点的话,那么就先以子节点为根节点对其局部再进行递归】
- 前序的话就是:【根、左、右】:A B D E C
- 中序的话就是:【左、根、右】:D B E A C
- 后序的话就是:【左、右、根】:D E B C A
2.前中后序的代码实现
- 一下用递归进行实现:
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) {
val = x;
}
}
class Solution {
// 前序遍历
public void preOrder(TreeNode node) {
if (node == null) {
return;
}
System.out.println(node.val); // 根节点先操作
preOrder(node.left);
preOrder(node.right);
}
// 中序遍历
public void inOrder(TreeNode node) {
if (node == null) {
return;
}
preOrder(node.left);
System.out.println(node.val);// 根节点中间操作
preOrder(node.right);
}
// 后序遍历
public void postOrder(TreeNode node) {
if (node == null) {
return;
}
preOrder(node.left);
preOrder(node.right);
System.out.println(node.val); //根节点最后操作
}
}
3.各个排序方式在算法题中的作用
(1)通过前中序、和中后序确定一个唯一的二叉树
- 通过前序和中序、或者中序和后序,能够确定一个确定的二叉排序树。
- 但是前序和后序搭配在一起,是无法确定唯一的二叉树的。
(2)二叉排序树的中序遍历是有序数组
- 二叉排序树的中序遍历是有序的,且为升序(参考下面的图)