深度搜索树

问题:对一个数组,匹配其中某个子节点的值,返回其对应的路径。
数组实例:

const options = [{
    'name': '河北省',
    'options': [{
        'name': '廊坊市',
        'options': [{
            'name': '廊坊XXX4s专营店',
            'options': []
        }, {
            'name': '燕郊FFFF4s直营店',
            'options': []
        }]
    }]
}, {
    'name': '吉林省',
    'options': [{
        'name': '长春市',
        'options': [{
            'name': '长春QQQ4s直营店',
            'options': []
        }]
    }]
}];

例如:给定「燕郊FFFF4s直营店」,返回 ['河北省', '廊坊市', '燕郊FFFF4s直营店']

JavaScript实现代码:

const search = (options, target) => {
    const result = [];
    try {
        const getNodePath = tree => {
            for(let i = 0; i < tree.length; i++) {
                const item = tree[i];
                result.push(item.name);
                if (item.name === target) {
                    throw new Error('get it!');
                }
                if (item.options && item.options.length) {
                    for(let j = 0; j < item.options.length; j++) {
                        getNodePath(item.options)
                    }
                }
                // 没有叶子节点,自己也不是,pop
                result.pop();
            }
        }
        getNodePath(options);
        return result;
    }
    catch(e) {
        return result;
    }
}

运行结果:


image.png

你可能感兴趣的:(深度搜索树)