数据结构与算法分析(Java语言描述)(17)—— 二叉搜索树的深度优先与广度优先遍历

二叉搜索树的深度优先遍历


这里写图片描述

先序遍历


这里写图片描述

// 先序遍历二叉搜索树
    public void preOrder() {
        preOrder(root);
    }

    // 对以node为根的二叉搜索树进行前序遍历, 递归算法
    private void preOrder(Node node) {
        if (node != null) {
            System.out.println(node.value);
            preOrder(node.left);
            preOrder(node.right);
        }
    }

中序遍历


这里写图片描述

// 中序遍历二叉搜索树
    public void inOrder(){
        inOrder(root);
    }

    // 对以 node 为根的二叉搜索树进行中序遍历,递归算法
    private void inOrder(Node node){
        if (node != null){
            inOrder(node.left);
            System.out.println(node.value);
            inOrder(node.right);
        }
    }

后序遍历


这里写图片描述

// 后序遍历二叉搜索树
    public void postOrder(){
        postOrder(root);
    }

    // 对以 node 为根的二叉搜索树进行后序遍历,递归算法
    private void postOrder(Node node){
        if (node != null){
            postOrder(node.left);
            postOrder(node.right);
            System.out.println(node.value);
        }
    }

二叉树的广度优先遍历


这里写图片描述

层序遍历


// 二叉搜索树的层序遍历(广度优先)
    public void levelOrder(){
        // 使用LinkedList来作为我们的队列
        LinkedList<Node> q = new LinkedList<>();
        q.add(root);

        // 先将 根节点 放入 q 中,再移除 此节点,将此节点的 左子节点 和 右子节点 放入 q 中
        // 直到 q 为空
        while (!q.isEmpty()) {
            Node node = q.remove();
            System.out.println(node.key);

            if (node.left != null) q.add(node.left);
            if (node.right != null) q.add(node.right);
        }
    }

计算二叉树的深度

    // 计算二叉树的深度
    public int getDepth() {
        return getDepth(root);
    }

    private int getDepth(Node node) {
        if (node == null)
            return 0;
        int left = getDepth(node.left);
        int right = getDepth(node.right);
        return left > right ? left + 1 : right + 1;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值