其实对于这个问题,很多人都可以说清楚,前中后对应的其实就是获取根节点的顺序来定义的,然后从左往右遍历(即使是后序遍历也是一样,先左后右然后是root)。
然后前序遍历和中序遍历都有一个模型的图片的,这个让我copy一下百度百科的图片。。
最后代码实现,建议使用递归,因为简单好记。。笑cry。
//前序遍历递归的方式
public void pre(TreeNode root){
if(null!=root){
//前序就是先答应root节点,然后左右递归
System.out.print(root.getData()+"\t");
pre(root.getLeft());
pre(root.getRight());
}
}
//中序遍历采用递归的方式
public void mid(TreeNode root){
if(null!=root){
mid(root.getLeft());
// 中序遍历就是左边递归结束,然后直接打印,然后递归右边
System.out.print(root.getData()+"\t");
mid(root.getRight());
}
}
//后序遍历采用递归的方式
public void post(TreeNode root){
if(root!=null){
post(root.getLeft());
post(root.getRight());
//后序就是左递归之后右递归,然后最后打印
System.out.print(root.getData()+"\t");
}
}
速记:前中后序的遍历就是将打印的操作放在前中后即可,it is so easy。。还有记不住的?不会了吧,因为其与代码完全一样。。。。