久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Java怎么生成樹形結構數據

139次閱讀
沒有評論

共計 1904 個字符,預計需要花費 5 分鐘才能閱讀完成。

Java 中生成樹形結構數據可以使用多種方法,下面列舉了兩種常用的方法:

方法一:使用遞歸實現

class TreeNode {int val;
    List<TreeNode> children;

    public TreeNode(int val) {this.val = val;
        this.children = new ArrayList<>();}
}

public class TreeGenerator {public static TreeNode generateTree(int[] nums, int rootIndex) {if (rootIndex >= nums.length) {return null;
        }
        
        TreeNode root = new TreeNode(nums[rootIndex]);
        
        int leftChildIndex = 2 * rootIndex + 1;
        int rightChildIndex = 2 * rootIndex + 2;
        
        root.children.add(generateTree(nums, leftChildIndex));
        root.children.add(generateTree(nums, rightChildIndex));
        
        return root;
    }
    
    public static void main(String[] args) {int[] nums = {1, 2, 3, 4, 5, 6, 7};
        
        TreeNode root = generateTree(nums, 0);
        
        // 打印樹的結構 
        printTree(root, 0);
    }
    
    public static void printTree(TreeNode root, int level) {if (root == null) {return;
        }
        
        for (int i = 0; i < level; i++) {System.out.print("\t");
        }
        
        System.out.println(root.val);
        
        for (TreeNode child : root.children) {printTree(child, level + 1);
        }
    }
}

方法二:使用隊列實現

class TreeNode {int val;
    List<TreeNode> children;

    public TreeNode(int val) {this.val = val;
        this.children = new ArrayList<>();}
}

public class TreeGenerator {public static TreeNode generateTree(int[] nums) {if (nums.length == 0) {return null;
        }
        
        TreeNode root = new TreeNode(nums[0]);
        Queue<TreeNode> queue = new LinkedList<>();
        queue.offer(root);
        
        int index = 1;
        while (!queue.isEmpty() && index < nums.length) {TreeNode currNode = queue.poll();
            
            // 左孩子 
            if (index < nums.length) {TreeNode leftChild = new TreeNode(nums[index++]);
                currNode.children.add(leftChild);
                queue.offer(leftChild);
            }
            
            // 右孩子 
            if (index < nums.length) {TreeNode rightChild = new TreeNode(nums[index++]);
                currNode.children.add(rightChild);
                queue.offer(rightChild);
            }
        }
        
        return root;
    }
    
    public static void main(String[] args) {int[] nums = {1, 2, 3, 4, 5, 6, 7};
        
        TreeNode root = generateTree(nums);
        
        // 打印樹的結構 
        printTree(root, 0);
    }
    
    public static void printTree(TreeNode root, int level) {if (root == null) {return;
        }
        
        for (int i = 0; i < level; i++) {System.out.print("\t");
        }
        
        System.out.println(root.val);
        
        for (TreeNode child : root.children) {printTree(child, level + 1);
        }
    }
}

以上兩種方法都可以根據給定的數組生成樹形結構數據,并且可以通過遞歸或者隊列的方式進行遍歷和打印。

丸趣 TV 網 – 提供最優質的資源集合!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-12-12發表,共計1904字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 广西| 霍山县| 渑池县| 奉贤区| 新津县| 芒康县| 锦屏县| 阜新市| 天气| 宾阳县| 武汉市| 林西县| 增城市| 金湖县| 大姚县| 寻乌县| 兴仁县| 苏尼特右旗| 常州市| 余庆县| 东丰县| 永定县| 普宁市| 措美县| 郸城县| 社旗县| 松潘县| 奉节县| 汽车| 日喀则市| 嘉峪关市| 墨玉县| 聂荣县| 大冶市| 靖宇县| 神木县| 瑞金市| 集安市| 雅安市| 敦化市| 天柱县|