[Algorithms] Tree Data Structure in JavaScript

Posted Answer1215

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Algorithms] Tree Data Structure in JavaScript相关的知识,希望对你有一定的参考价值。

In a tree, nodes have a single parent node and may have many children nodes. They never have more than one parent nor point to any siblings.

The most common tree structure you see is a web page. The underlying structure is often called the "DOM tree". The html element forms the root of our tree, with children of head and body, so on and so forth. In this lesson, we‘ll create a quick example of a DOM tree with our tree data structure.

 
function crateNode (key) {
    let children = [];
    return {
        key,
        children,
        addChild (cKey) {
            const childNode = crateNode(cKey)
            this.children.push(childNode)
            return childNode;
        }
    }
}

function createTree (rootKey) {
    const root = crateNode(rootKey);

    function print () {
        let result = ‘‘;

        function traverse (node, visitFn, depth) {
            visitFn(node, depth);

            if (node.children.length) {
                node.children.forEach(n => traverse(n, visitFn, depth + 1))
            }
        }

        function addKeyToResult(node, depth) {
            result +=
              result.length === 0
                ? node.key
                : `
${‘ ‘.repeat(depth * 2)}${node.key}`
        }

        traverse(root, addKeyToResult, 0)

        return result;
    }
    return {
        root,
        print
    }
}

const dom = createTree(‘html‘)
const head = dom.root.addChild(‘head‘)
const body = dom.root.addChild(‘body‘)
const title = head.addChild(‘title - egghead Tree Lesson‘)
const header = body.addChild(‘header‘)
const main = body.addChild(‘main‘)
const footer = body.addChild(‘footer‘)
const h1 = header.addChild(‘h1 - Tree Lesson‘)
const p = main.addChild(‘p - Learn about trees!‘)
const copyright = footer.addChild(`Copyright ${new Date().getFullYear()}`)

console.log(dom.print())

/*
html
  head
    title - egghead Tree Lesson
  body
    header
      h1 - Tree Lesson
    main
      p - Learn about trees!
    footer
      Copyright 2018

*/

 

以上是关于[Algorithms] Tree Data Structure in JavaScript的主要内容,如果未能解决你的问题,请参考以下文章

Algorithms - Data Structure - Binary Search Tree - 数据结构之二叉搜索树

List单链表实现

leetcode-algorithms-109. Convert Sorted List to Binary Search Tree

树及其衍生算法(Trees and tree algorithms)

Coursera Algorithms week4 基础标签表 练习测验:Check if a binary tree is a BST

Tree Representation Implementation & Traversal