二叉树的按数组创建

这篇博客介绍了如何根据给定的数组创建二叉树。首先,空节点在数组中用#表示。通过按根左右顺序标号节点,然后创建一个TreeList记录节点,并将数组中的元素按顺序放入。接着,通过标号连接每个节点与其子节点。博客还提供了一个Java实现,包括创建二叉树、镜像翻转和前序遍历的方法。
摘要由CSDN通过智能技术生成

首先空的节点在数组中用#号表示。

思路:

1.把树从根左右的顺序从0开始标号。那么第i号节点的左孩子的标号是2*i+1,右孩子是2*i+2。

2.程序上实现标号:

即创建一个TreeList类型的List记作nodeList,

List<TreeNode> nodeList = new ArrayList<TreeNode>();

再把数组中的元素按顺序放进去:

for(int i = 0;i < arr.size();i++){

    if((String)arr.get(i) != "#"){

        nodeList.add(new TreeNode((String)arr.get(i)));
    }
    else{
        nodeList.add(null);
    }

}

这样就能够按标号找到节点,接下来只需要把每个有孩子的节点连上其孩子即可,而孩子很容易通过标号找到在数组中找到。

剩下的就是一些细节问题,比如数组越界的处理,还有遍历到空节点要继续向下遍历到非空。直接贴代码了。

public static TreeNode createTree(List<String> arr){
    List<TreeNode> nodeList = new ArrayList<TreeNode>();
    if(arr == null){
    return null;
    }
    else{
    for(int i = 0;i < arr.size();i++){
        if((String)arr.get(i) != "#"){
        nodeList.add(new TreeNode((String)arr.get(i)));
        }
        else{
        nodeList.add(null);
        }
        }
        int i = 0;
       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值