二叉树实现(根据层级数组生成二叉树)
public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode() { } TreeNode(int val) { this.val = val; } TreeNode(int val, TreeNode left, TreeNode right) { this.val = val; this.left = left; this.right = right; } /** * * @param arrs 层级遍历数组生成二叉树 * @return */ public static TreeNode cjdefin(Object [] arrs){ return cjdefin(arrs, 0); } /** * * @param arrs 层级遍历数组生成树 * @param start 父节点开始位置 * @return */ public static TreeNode cjdefin(Object [] arrs,Integer start){ if (start > arrs.length - 1 || arrs[start] == null ){ return null; } //声明父节点 TreeNode treeNode = new TreeNode(Integer.parseInt(arrs[start] + "")); treeNode.left = cjdefin(arrs,(start + 1) * 2 -1); treeNode.right = cjdefin(arrs,(start + 1) * 2); return treeNode; } }
测试
Object [] arrs = { 3,9,20,null,null,15,7}; //根据数组得到二叉树,具体如下图 TreeNode cjdefin = TreeNode.cjdefin(arrs);
下一篇:
算法修炼5、重建二叉树