27.前中后序遍历

1.思路分析

前序遍历:
- 1.先输出当前节点
- 2.如果当前节点的左子节点不为空,则递归继续前序遍历左子节点
- 3.如果当前节点的右子节点不为空,则递归继续前序遍历右子节点
 //前序遍历
    public void preSort(){
        System.out.println(this);
        if(this.left!=null){
            this.left.preSort();
        }
        if(this.right!=null){
            this.right.preSort();
        }
    }
中序遍历:
- 1.如果当前节点的左子节点不为空,则递归中序遍历左子节点
- 2.输出当前节点
- 3.如果当前节点的右子节点不为空,则递归中序遍历右子节点
//中序遍历
    public void infixSort(){
        if(this.left!=null){
            this.left.infixSort();
        }
        System.out.println(this);
        if(this.right!=null){
            this.right.infixSort();
        }
    }

后序遍历:

- 1.如果当前节点的左子节点不为空,则递归后序遍历左子节点
- 2.如果当前节点的右子节点不为空,则递归后序遍历右子节点
- 3.输出当前节点
 //后序遍历
    public void postSort(){
        if(this.left!=null){
            this.left.postSort();
        }
        if(this.right!=null){
            this.right.postSort();
        }
        System.out.println(this);
    }

2.代码实现

HeroNode 类

class HeroNode{
    private int id;
    private String name;
    private HeroNode left;
    private HeroNode right;

    public HeroNode() {
    }

    public HeroNode(int id, String name) {
        this.id = id;
        this.name = name;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public HeroNode getLeft() {
        return left;
    }

    public void setLeft(HeroNode left) {
        this.left = left;
    }

    public HeroNode getRight() {
        return right;
    }

    public void setRight(HeroNode right) {
        this.right = right;
    }

    @Override
    public String toString() {
        return "HeroNode{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
    //前序遍历
    public void preSort(){
        System.out.println(this);
        if(this.left!=null){
            this.left.preSort();
        }
        if(this.right!=null){
            this.right.preSort();
        }
    }
    //中序遍历
    public void infixSort(){
        if(this.left!=null){
            this.left.infixSort();
        }
        System.out.println(this);
        if(this.right!=null){
            this.right.infixSort();
        }
    }
    //后序遍历
    public void postSort(){
        if(this.left!=null){
            this.left.postSort();
        }
        if(this.right!=null){
            this.right.postSort();
        }
        System.out.println(this);
    }
}

二叉树类

class BinaryTree{
    HeroNode root;
    public void setRoot(HeroNode heroNode){
        this.root = heroNode;
    }
    //前序遍历
    public void preSort(){
        root.preSort();
    }
    //中序遍历
    public void infixSort(){
        root.infixSort();
    }
    //后序遍历
    public void postSort(){
        root.postSort();
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容