二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。二叉树的遍历方式分为深度遍历和广度遍历,深度遍历包括前序、中序以及后序三种遍历方法,广度遍历即我们平常所说的层次遍历。因为树的定义本身就是递归定义,因此采用递归的方法去实现树的深度遍历不仅容易理解而且代码很简洁,而对于广度遍历来说,需要其他数据结构的支撑,比如堆了。所以,对于一段代码来说,可读性有时候要比代码本身的效率要重要的多。
四种主要的遍历思想为:
前序遍历:根结点 ---> 左子树 ---> 右子树
中序遍历:左子树---> 根结点 ---> 右子树
后序遍历:左子树 ---> 右子树 ---> 根结点
层次遍历:只需按层次遍历即可
一、前序遍历
1)递归实现很简单,思路:访问根节点-前序遍历左子树-前序遍历右子树。
停止条件是当前树不为空树,代码:
public void preOrder(TreeNode root, ArrayList<Integer> out){
if(root!=null) {
out.add(root.val);
preOrder(root.left, out);
preOrder(root.right, out);
}
}