js数据结构处理--------树结构数据遍历

Posted 小码飞驰

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js数据结构处理--------树结构数据遍历相关的知识,希望对你有一定的参考价值。

1、深度遍历

深度遍历利用栈来实现

class Stack {
    
    constructor () {
        this.top = 0, // 栈的长度
        this.list = []
    }

    push(item) {
        this.top++;
        this.list.push(item) // 入栈操作
    }

    pop () {
        --this.top;
        return this.list.pop() // 出栈操作
    }

    peek () {
        return this.list[this.top -1] // 查询栈顶元素
    }

}

let treeData = {
    id: 0,
    name: ‘00‘,
    children: [
    {
        id: 1,
        name: ‘01‘,
        children: [
        {
            id: 11,
            name: ‘11‘,
            children: []
        }]    
    },
    {
        id: 2,
        name: ‘02‘,
        children: [
        {
            id: 22,
            name: ‘22‘,
            children: []
        }]
    }]
}

function formatTreeData(data) {
    let stack = new Stack()
    stack.push(data);
    while(stack.top) {
        let item = stack.pop()
        for (let i in item.children) {
            stack.push(item.children[i])
        }
        console.log(item.id)
    }
}
formatTreeData(treeData)

2、广度遍历

广度遍历利用队列来实现

 

class Queue {
    
    constructor () {
        this.top = 0, // 栈的长度
        this.list = []
    }

    push(item) {
        this.top++;
        this.list.push(item) // 入栈操作
    }

    shift() {
        --this.top;
        return this.list.shift() // 出栈操作
    }

    peek () {
        return this.list[this.top -1] // 查询栈顶元素
    }

}

let treeData = {
    id: 0,
    name: ‘00‘,
    children: [
    {
        id: 1,
        name: ‘01‘,
        children: [
        {
            id: 11,
            name: ‘11‘,
            children: []
        }]    
    },
    {
        id: 2,
        name: ‘02‘,
        children: [
        {
            id: 22,
            name: ‘22‘,
            children: []
        }]
    }]
}

function formatTreeData(data) {
    let queue = new Queue()
    queue.push(data);
    while(queue.top) {
        let item = queue.shift()
        for (let i in item.children) {
            queue.push(item.children[i])
        }
        console.log(item.id)
    }
}
formatTreeData(treeData)

 

以上是关于js数据结构处理--------树结构数据遍历的主要内容,如果未能解决你的问题,请参考以下文章

js中树结构根据条件查找节点返回节点路径的一些思路

C语言数据结构“遍历二叉树”

JS中的二叉树遍历

数据结构 深度优先遍历

js中平级数组和树形结构数据相互转换

求数据结构算法平衡二叉树实现代码