JS递归求解N叉树的深度和广度

96 阅读1分钟

树型数据结构非常常用,对于一般数据需要求深度(即有多少层)来限制数据的添加的需求。

   // 获取树的深度
    function handleGetTreeDeep ( tree ) {
        let deep = 0;
        tree.forEach( ( item ) => {
            if ( item.children ) {
                deep = Math.max( deep, handleGetTreeDeep( item.children ) + 1 );
            } else {
                deep = Math.max( deep, 1 );
            }
        } );
        return deep;
    }
    // 获取树的广度
    function handleGetTreeExtent ( tree ) {
        let extend = 0;
        tree.forEach( ( item ) => {
            if ( item.children ) {
                extend += handleGetTreeExtent( item.children );
            } else {
                extend += 1;
            }
        } );
        return extend;
    }

传递的数据只需要包含childern字段。