Java樹的深度和廣度
Java中的樹結構是一種常用的數據結構,它具有分層的結構特點,用于表示層次關系。樹的深度和廣度都是樹結構中兩個重要的概念,它們分別表示樹的層數和每層節點數。深度和廣度的計算方法也是不同的。
樹的深度
/** * 計算二叉樹的深度 * * @param root 樹的根節點 * @return 樹的深度 */ public static int getDepth(TreeNode root) { if (root == null) { return 0; } int leftDepth = getDepth(root.left); int rightDepth = getDepth(root.right); return Math.max(leftDepth, rightDepth) + 1; }
上面的代碼演示了如何計算二叉樹深度,其中TreeNode為二叉樹的節點類,left和right分別為左右子節點,通過遞歸查詢左右子節點的深度并取較大值,再加上根節點的深度,最終得到樹的深度。
樹的廣度
/** * 計算二叉樹每層的節點個數 * * @param root 樹的根節點 * @return 樹每層的節點數 */ public static ListgetBreadth(TreeNode root) { List res = new ArrayList<>(); if (root == null) { return res; } Queue queue = new LinkedList<>(); queue.offer(root); while (!queue.isEmpty()) { int size = queue.size(); res.add(size); for (int i = 0; i< size; i++) { TreeNode node = queue.poll(); if (node.left != null) { queue.offer(node.left); } if (node.right != null) { queue.offer(node.right); } } } return res; }
該代碼演示了如何計算二叉樹每層節點數,其中TreeNode為二叉樹的節點類,left和right分別為左右子節點,通過一個隊列逐層遍歷樹,并在遍歷每一層時記錄該層節點數,最終得到樹的廣度。
綜上所述,樹的深度和廣度是樹結構中的兩個重要指標,計算方法也各不相同,理解這兩個概念對于深入學習和應用樹結構都非常重要。