数据结构中对于二叉树的遍历一共有三种
- 前序遍历
- 中序遍历
- 后序遍历
其实要划分三者很简单,只要将二叉树以当前节点(初始为根root节点),左子节点,右子节点三者划分出来,三种遍历就只是在以当前节点的位置区分前序、中序、后序遍历。
具体划分为:
1)前序遍历:
①先输出当前节点;②如果左子节点不为空,则递归前序遍历;③如果右子节点不为空,则递归前序遍历。
2)中序遍历:
①如果左子节点不为空,则递归中序遍历;②输出当前节点;③如果右子节点不为空,则递归中序遍历。
3)后续遍历:
①如果左子节点不为空,则递归后序遍历;②如果右子节点不为空,则递归后序遍历;③输出当前节点。
总结:
三种遍历内容大体一致,具体区分的是当前节点的输出顺序,只要记住这点和输出顺序,相关的遍历顺序题就迎刃而解了。
具体代码实现:
1)前序遍历:
System.out.println(this);//先输出父节点
//递归左子树
if (this.left != null) {
this.left.preOrder();
}
//递归向右子树前序遍历
if (this.right != null) {
this.right.preOrder();
}
2)中序遍历:
//递归左子树
if (this.left != null) {
this.left.infixOrder();
}
System.out.println(this);//输出父节点
//递归向右子树前序遍历
if (this.right != null) {
this.right.infixOrder();
}
3)后序遍历:
//递归左子树
if (this.left != null) {
this.left.postOrder();
}
//递归向右子树前序遍历
if (this.right != null) {
this.right.postOrder();
}
System.out.println(this);//输出父节点
是不是很简单,不积跬步无以至千里,你学废了吗?