JSFiddle - React, Tailwind, and code Playground

HTML

<script src="https://nervgh.github.io/js/recursive-iterator.min.js"></script>

JavaScript

var root = {
    "C": [{
        "path": ["C", "C3", "C8", "C2", "C12", "C"],
        "point": [
            ["48.5515", "29.5915"],
            ["45.729", "29.7453"],
            ["48.0188", "31.0637"],
            ["47.6686", "32.404"]
        ]
    }, {
        "path": ["C", "C11", "C"],
        "point": {
            "4": ["49.3284", "31.1077"]
        }
    }],
    "D": [{
        "path": ["D", "D7", "D5", "D4", "D14", "D"],
        "point": [
            ["48.039", "38.2796"],
            ["47.1016", "35.2604"],
            ["48.6972", "35.7438"],
            ["50.0099", "37.1602"]
        ]
    }, {
        "path": ["D", "D10", "D"],
        "point": {
            "4": ["50.0695", "33.7004"]
        }
    }],
    "A": [{
        "path": ["A", "A0", "A13", "A1", "A"],
        "point": [
            ["51.5378", "33.5307"],
            ["50.3561", "32.1842"],
            ["50.2153", "29.5036"]
        ]
    }],
    "B": [{
        "path": ["B", "B9", "B6", "B"],
        "point": [
            ["50.8827", "25.3508"],
            ["50.039", "25.2796"]
        ]
    }]
};


function isPoint(any) {
    if (!Array.isArray(any)) return false;
    if (any.length !== 2) return false;
    if (Number(any[0]) != any[0]) return false;
    if (Number(any[1]) != any[1]) return false;
    return true;
}

var stack = [];

for(var item of new RecursiveIterator(root)) {
    if (isPoint(item.node)) {
        stack.push(item.node);
    }
}

console.log(JSON.stringify(stack));