• js 二叉树遍历


    二叉树定义这里不再赘述。

    我这里有个二叉树:

    var tree = {
        "id": 0,
        "name": "root",
        "left": {
            "id": 1,
            "name": "Simon",
            "left": {
                "id": 3,
                "name": "Carl",
                "left": {
                    "id": 7,
                    "name": "Lee",
                    "left": {
                        "id": 11,
                        "name": "Fate"
                    }
                },
                "right": {
                    "id": 8,
                    "name": "Annie",
                    "left": {
                        "id": 12,
                        "name": "Saber"
                    }
                }
            },
            "right": {
                "id": 4,
                "name": "Tony",
                "left": {
                    "id": 9,
                    "name": "Candy"
                }
            }
        },
        "right": {
            "id": 2,
            "name": "right",
            "left": {
                "id": 5,
                "name": "Carl",
            },
            "right": {
                "id": 6,
                "name": "Carl",
                "right": {
                    "id": 10,
                    "name": "Kai"
                }
            }
        }
    };

    1.使用前序遍历,并将所有name输出。

    function getListWithDLR(node) {
        if(node){
            console.log(node.name);
            getListWithDLR(node.left);
            getListWithDLR(node.right);
        }
    }
    getListWithDLR(tree); //调用函数,并把二叉树传进去。

    2.使用中序遍历,并将所有name输出。

    function getListWithLDR(node) {
        if(node){
            getListWithLDR(node.left);
            console.log(node.name);
            getListWithLDR(node.right);
        }
    }
    getListWithLDR(tree);

    3.使用后序遍历,并将所有name输出。

    function getListWithLRD(node) {
        if(node){
            getListWithLDR(node.left);
            getListWithLDR(node.right);
            console.log(node.name);
        }
    }
    getListWithLRD(tree);

    原理:使用迭代。

    4. 根据name找id。

    function findIdByName(name,node) {
        if(node){
            if (node.name === name) {
                console.log(node.id);
            } else {
                findIdByName(name, node.left);
                findIdByName(name, node.right);
            }
        }
    }
    findIdByName('Carl',tree);
  • 相关阅读:
    iOS13使用bluetooth作为peripheral发送广播问题
    替代AttributeString的一个Label的类目
    Xcode拖动选中代码
    判断地图定位授权状态
    QLPreViewController的初步实用
    iOS的多版本配置(版本分离,多环境配置)
    -[NSBundle initWithURL:]: nil URL argument'
    xib的UIScrollView自适应高度
    ab工具-压力测试工具
    UIImageView的属性contentMode
  • 原文地址:https://www.cnblogs.com/yadiblogs/p/9164571.html
Copyright © 2020-2023  润新知