下面是用Java写的二叉树的深度遍历和广度遍历的算法示例:

import java.util.LinkedList;
import java.util.Queue;

class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;

    public TreeNode(int val) {
        this.val = val;
        this.left = null;
        this.right = null;
    }
}

public class BinaryTreeTraversal {
    // 深度优先遍历(前序遍历)
    public static void depthFirstTraversal(TreeNode root) {
        if (root == null) {
            return;
        }
        System.out.print(root.val + " ");
        depthFirstTraversal(root.left);
        depthFirstTraversal(root.right);
    }

    // 广度优先遍历
    public static void breadthFirstTraversal(TreeNode root) {
        if (root == null) {
            return;
        }
        Queue<TreeNode> queue = new LinkedList<>();
        queue.offer(root);
        while (!queue.isEmpty()) {
            TreeNode node = queue.poll();
            System.out.print(node.val + " ");
            if (node.left != null) {
                queue.offer(node.left);
            }
            if (node.right != null) {
                queue.offer(node.right);
            }
        }
    }

    public static void main(String[] args) {
        // 构建一个示例二叉树
        TreeNode root = new TreeNode(1);
        TreeNode node2 = new TreeNode(2);
        TreeNode node3 = new TreeNode(3);
        TreeNode node4 = new TreeNode(4);
        TreeNode node5 = new TreeNode(5);
        TreeNode node6 = new TreeNode(6);
        TreeNode node7 = new TreeNode(7);

        root.left = node2;
        root.right = node3;
        node2.left = node4;
        node2.right = node5;
        node3.left = node6;
        node3.right = node7;

        // 深度优先遍历
        System.out.print("深度优先遍历:");
        depthFirstTraversal(root);
        System.out.println();

        // 广度优先遍历
        System.out.print("广度优先遍历:");
        breadthFirstTraversal(root);
        System.out.println();
    }
}

解释:

  • 深度优先遍历(前序遍历):从根节点开始,先访问根节点,然后递归地遍历左子树,再递归地遍历右子树。在上述示例中,深度优先遍历的结果为:1 2 4 5 3 6 7。

  • 广度优先遍历:从根节点开始,一层一层地遍历二叉树。使用队列来存储每一层的节点,先将根节点入队,然后依次出队并访问,同时将其左右子节点入队,直到队列为空。在上述示例中,广度优先遍历的结果为:1 2 3 4 5 6 7

用jave写一个二叉树的深度遍历和广度遍历的算法并解释

原文地址: https://www.cveoy.top/t/topic/iMB8 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录