首页 > 其他分享 >利用数组构建二叉树(随笔)

利用数组构建二叉树(随笔)

时间:2022-11-17 18:36:35浏览次数:50  
标签:arr right const 随笔 结点 二叉树 数组 null left

做leetcode的时候,看到示例,突然想自己构建一颗树。。
随即自己写了尝试写了一个方法(比较随意)

测试用例:

// example-1
[2,1,3]

// example-2
[2,null,3]

// example-3
[5,3,6,2,4,null,null,1]

测试代码:

/**
 * 树结点
 */
function TreeNode(val) {
   this.val = val;
   this.left = this.right = null;
}

/* ======= 测试函数 ======= */
function test(arr) {
    if (arr.length === 0) {
        return null;
    }
    // 初始化头结点
    const head = arr.shift();
    const root = new TreeNode(head);
    // 剩余元素长度
    const len = arr.length;
    // 维护队列(建树)
    const Q = [root];
    let i = 0;
    while (i < len) {
        // 记录当前层包含的树结点个数
        const size = Q.length;
        // 为现有队列中的每个树结点建立与子结点的关系
        for (let j = 0; j < size; j++) {
            const item = Q.shift();
            const left = new TreeNode(arr[i]);
            const right = new TreeNode(arr[i + 1]);
            item.left = left;
            item.right = right;
            // 如果左子树不为空,推入队列
            if (left !== null) {
                Q.push(item.left);
            }
            // 如果右子树不为空,推入队列
            if (right !== null) {
                Q.push(item.right);
            }
            i += 2;
        }
    }
    // 返回根结点
    return root;
}

 

标签:arr,right,const,随笔,结点,二叉树,数组,null,left
From: https://www.cnblogs.com/fanqshun/p/16900391.html

相关文章

  • 35:列表_元素删除的三种方式_删除本质是数组元素拷贝
    ###列表元素的删除###del删除删除列表指定位置的元素。>>>a=[100,200,888,300,400]>>>dela[1]>>>a[100,200,300,400]###pop()方法pop()删除并返回指定位置......
  • Day14.2:数组的声明及创建
    数组概念相同类型的数据的集合。语法格式://数组类型数组名=数组的值;int[]a=newint[10];//数组a含10个int类型的数据//====================================......
  • NumPy切片或直接赋值生成数组视图
    1先创建一个ndarry数组aimportnumpyasnpa=np.arange(start=1,stop=10,step=2)print(a)[13579]2将a切片赋值于一个数组bb=a[0:1]print(b)[1]3......
  • [模板]kmp求Next数组
    模板#include<iostream>#include<string>usingnamespacestd;voidgetNext(conststring&p,intnext[]){intlen=(int)p.size();next[0]=-1;......
  • shell 关联数组 ${!array[@]} 取关联数组所有键
    ShellAssociativeArray   bashi没有原生的对于类似hashtable的支持,不像perl或python.下标数组元素是通过数组下标(数组下标可以是算术表达式,其结果必须是一个整数)......
  • 代码随想录day1补充之LeetCode27移除元素相向双指针法&补充题目---LeetCode35搜索插入
    1.LeetCode27移除元素题是晚上刷的,今天看发现第一天的题目只写了快慢指针法(见链接Day1),现补充练习实现相向双指针法。分析:相向双指针法是指使用左右指针,左指针寻找需要移......
  • ReactNote-函数组件和类组件
    组件:可以编写react元素虚拟DOM:react元素真实的DOM:可以展示React里很重要的:组件组件目的:复用组件作用:代码分隔组件在React里有两种定义的方式:第一种:......
  • PHP 之将数组拼接为sql语句
    一、代码/***拼接sql语句*@param$table*@param$array*@returnstring*/functioninsertSql($table,$array){$sqlk='';$sqlv='';f......
  • c——动态数组
    #include<stdio.h>#include<string.h>typedefstructtest_stest_t;structtest_s{inta;intb;chararr[0];};intmain(){test_t*t;......
  • 两个数组的交集II
    两个数组的交集一、题目描述给定两个数组nums1和nums2,求出给相交的元素的即可。返回的结果元素,应与两个数组中元素出现的次数相同,如果不相同,则返回较小的次数。实例1:......