我们都知道二叉树的遍历方式常用的两种方式:
- 深度优先遍历:沿着一个方向一条路先走到黑,等到无路可走了,再回头探索其他路。
- 广度优先遍历:沿途相邻的景点都去逛一下,逛完了再逛下一层的所有景点
至于广度优先我前面:http://t.csdn.cn/kM5fR 这篇博客的分层打印其实就是一个广度优先的实现
本篇将介绍java中二叉树的深度优先遍历的实现方式。
深度优先又可以分为:
- 前序:先输出父节点,然后左节点,然后右节点
- 中序:先输出左节点,然后父节点,然后右节点
- 后序:先输出左节点,然后右节点,然后父节点
这里的 “前、后、中” 是指父节点的输出顺序。
先从简单的递归实现方式来实现这三种遍历吧
前序:
/**
* 前序遍历
* @param node 二叉树节点(根节点)
*/
public static void preOrder(final TreeNode node)
{
if (node == null)//如果节点为空,终止递,开始归回溯
{
return;
}
System.out.print(node.getVal() + "\t");//输出节点值
preOrder(node.getLeft());//递归遍历左子树
preOrder(node.getRight());//递归遍历右子树
}
前序就是先输出,再遍历左子树,再遍历右子树
<
最低0.47元/天 解锁文章
3660

被折叠的 条评论
为什么被折叠?



