JSFiddle - React, Tailwind, and code Playground

by Aaron Zhang

JavaScript

function DFS(currentNode, list) {
    list.push(currentNode.label);
    for (var i = 0; i < currentNode.children.length; ++i) {
        DFS(currentNode.children[i], list);
    }
    return list;
}

function BFS(currentNode, level, levelDict) {
    levelDict[level] = levelDict[level] || [];
    levelDict[level].push(currentNode.label);
    ++level;
    for (var i = 0; i < currentNode.children.length; ++i) {
        BFS(currentNode.children[i], level, levelDict);
    }
    return levelDict;
}

var root = {
    label: 'a',
    children: [{
        label: 'b',
        children: [{
            label: 'd',
            children: []
        }]
    }, {
        label: 'c',
        children: [{
            label: 'e',
            children: []
        }]
    }]
};