Java开发面经分享,【数据结构与算法 13(1)

    root.setRight(node3);

    node3.setLeft(node4);

    node3.setRight(node5);

    binaryTree.setRoot(root);

    System.out.println("前序遍历");

    binaryTree.preOrder();

    System.out.println("中序遍历");

    binaryTree.midOrder();

    System.out.println("后序遍历");

    binaryTree.postOrder();

    binaryTree.delNode(3);

    System.out.println("删除结点3,前序遍历");

    binaryTree.preOrder();

}

}

//定义BinaryTree 二叉树

class BinaryTree {

private HeroNode root;



public HeroNode getRoot() {

    return root;

}



public void setRoot(HeroNode root) {

    this.root = root;

}

//前序遍历

public void preOrder() {

    if(this.root != null) {

        this.root.preOrder();

    }else {

        System.out.println("二叉树为空,不能遍历");

    }

}

//中序遍历

public void midOrder() {

    if(this.root != null) {

        this.root.midOrder();

    }else {

        System.out.println("二叉树为空,无法遍历");

    }

}

//后序遍历

public void postOrder() {

    if(this.root != null) {

        this.root.postOrder();

    }else {

        System.out.println("二叉树为空,无法遍历");

    }

}



//删除结点

public void delNode(int no) {

    if(root != null) {

        //如果只有一个root结点, 这里立即判断root是不是就是要删除结点

        if(root.getNo() == no) {

            root = null;

        } else {

            //递归删除

            root.delNode(no);

        }

    }else{

        System.out.println("空树,不能删除~");

    }

}

}

//先创建HeroNode 结点

class HeroNode {

private int no;

private String name;

private HeroNode left; //默认null

private HeroNode right; //默认null

public HeroNode(int no, String name) {

    this.no = no;

    this.name = name;

}

public int getNo() {

    return no;

}

public void setNo(int no) {

    this.no = no;

}

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 [no=" + no + ", name=" + name + "]";

}



//前序遍历

public void preOrder() {

    System.out.println(this);//先输出父节点

    //递归向左子树前序遍历

    if(this.left != null) {

        this.left.preOrder();

    }

    //递归向右子树前序遍历

    if(this.right != null) {

        this.right.preOrder();

    }

}



//中序遍历

public void midOrder() {

    //递归向左子树中序遍历

    if(this.left != null) {

        this.left.midOrder();

    }

    System.out.println(this);//输出父节点

    //递归向右子树前序遍历

    if(this.right != null) {

        this.right.midOrder();

    }

}



//后序遍历

public void postOrder() {

    //递归向左子树后序遍历

    if(this.left != null) {

        this.left.postOrder();

    }

    //递归向右子树前序遍历

    if(this.right != null) {

        this.right.postOrder();

    }

    System.out.println(this);//输出父节点

}



//递归删除结点

最后

由于细节内容实在太多了,为了不影响文章的观赏性,只截出了一部分知识点大致的介绍一下,每个小节点里面都有更细化的内容!

需要这份文档的朋友可以帮忙点个赞,点击下方神秘超链接,就可以免费获取到了,还有小编准备的一份Java进阶学习路线图(Xmind)以及来年金三银四必备的一份《Java面试必备指南》

资料领取链接:Java进阶学习路线图(Xmind)+《Java面试必备指南》

最后

由于细节内容实在太多了,为了不影响文章的观赏性,只截出了一部分知识点大致的介绍一下,每个小节点里面都有更细化的内容!

[外链图片转存中…(img-iMx1OvOQ-1628283447761)]

需要这份文档的朋友可以帮忙点个赞,点击下方神秘超链接,就可以免费获取到了,还有小编准备的一份Java进阶学习路线图(Xmind)以及来年金三银四必备的一份《Java面试必备指南》

资料领取链接:Java进阶学习路线图(Xmind)+《Java面试必备指南》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值