javascript - 自下而上的树遍历

标签 javascript algorithm ecmascript-6 tree

<分区>

如果你能向我解释如何遍历这棵树(最好是在 javascript 中),我将非常感激:

binary tree

顺序为:1-3-8 | 4-6-3-8 | 7-6-3-8 | 13-14-10-8

模拟数据可能如下所示:

let tree = {
  'parent': {
    'immediate child': {
      'post immediate child'
    }
    'second immediate child': {
      'second post immediate child'
    }
  }
}

function goUpTheTree(tree) {

}

任何帮助将不胜感激...

最佳答案

基本上你可以存储节点的路径,如果发现一个节点没有任何左分支或右分支,你就将路径作为值。

function getBottomUp(node, path) {
    path = [node.value].concat(path || []);
    if (!node.left && !node.right) {
        console.log(JSON.stringify(path));
        return;
    }
    node.left && getBottomUp(node.left, path);
    node.right && getBottomUp(node.right, path);
}

var tree = { value: 8, left: { value: 3, left: { value: 1 }, right: { value: 6, left: { value: 4 }, right: { value: 7 } } }, right: { value: 10, right: { value: 14, left: { value: 3 } } } };

getBottomUp(tree);

关于javascript - 自下而上的树遍历,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46101964/

相关文章:

javascript - 如何在显示警报时调暗背景并在警报关闭时关闭#dim?

javascript - Jquery 和 Bootstrap 应该放在 HTML 文件的什么位置?

algorithm - Dijkstra 的自稳定算法如何工作?

javascript - Feathersjs API ES6 类钩子(Hook)和其余未定义

javascript - ES6 生成器 : poor stack trace from iterator. 抛出(错误)

javascript - 获取 polyfill 在 Edge(或 IE)上不起作用

javascript - jQuery ui Datepicker - 全局扩展/覆盖?

javascript - import from 'events' 与 import {EventEmitter} from 'events' 有什么区别?

php - 我今天可以在我的代码中做什么,以防止 unix 时间戳在 2038 年用完?

c++ - 求 N 个元素数组中 'P' 个元素的最小总和,使得一起选择的连续元素不超过 'k' 个