JSFiddle - React, Tailwind, and code Playground

by Aaron Zhang

JavaScript

function DFS(current, list) {
    if (typeof current != 'object') {
        return;
    }
    for (var k in current) {
        list.push(k);
        console.log(list);
        DFS(current[k], list);
    }
    return list;
}

function BFS(current, level, levelDict) {
    levelDict[level] = levelDict[level] || [];
    for (var k in current) {
        levelDict[level].push(k);
        BFS(current[k], level + 1, levelDict);
    }
    return levelDict;
}

function rootToLeaf(current, trace, list) {
    if (typeof current != 'objcet' && trace.length) {
        list.push(trace);
    }
    for (var k in current) {
        var newTrace = trace.concat([k]);
        rootToLeaf(current[k], newTrace, list);
    }
    return list;
}

var root = {
    "a": {
        "b": {
            "c": 1
        },
            "b1": {
            "k": 3
        }
    },
        "d": {
        "e": 3,
            "f": {
            "g": 3,
                "h": 1
        }
    },
        "i": 12
};
rootToLeaf(root, [], []);