二叉树实现(根据层级数组生成二叉树)
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、重建二叉树
