当前位置:   article > 正文

二叉树三种遍历方式,先序、中序、后序_二叉树的先序中序后序遍历

二叉树的先序中序后序遍历

二叉树遍历方式分为三种:先序,中序和后序。
可以以根节点的位置为参考来记遍历方式,在第一个为先序,中间为中序,最后为后序;
即:先序: 根左右;中序:左根右;后序:左右根。

借个图:
这里写图片描述

之前看过一个视频,关于如何遍历二叉树,只需要围绕二叉树画个轮廓结果就出来了,效果跟此文章类似:https://www.cnblogs.com/shunyu/p/4986288.html

每个节点左上角,底部,右上角分别对应先序,中序,后序时的取值点,以先序为例:
(图画得略丑,见谅。。)
这里写图片描述

在每个节点左上角做个标识,以根节点左上角为出发点,沿着树路径逆时针画个轮廓,以线先后经过的红点顺序记录节点值。
即为A -> B -> C -> D -> E -> F -> G -> H -> K

对于中序遍历:
这里写图片描述

以上述方法,即为 B -> D -> C -> A -> E -> H -> G -> K -> F

后序:
这里写图片描述
即为 D -> C -> B -> H -> K -> G -> F -> E -> A

当然,此方法对于新接触二叉树遍历很是快捷。熟练的话只要抓住遍历顺序规则很快就能得出结果。

JS获取遍历结果:

const data = {
    type: 'branch',
    value: 'A',
    left: {
        type: 'branch',
        value: 'B',
        left: null,
        right: {
            type: 'branch',
            value: 'C',
            left: {
                type: 'node',
                value: 'D',
                left: null,
                right: null
            },
            right: null
        }
    },
    right: {
        type: 'branch',
        value: 'E',
        left: null,
        right: {
            type: 'branch',
            value: 'F',
            left: {
                type: 'branch',
                value: 'G',
                left: {
                    type: 'node',
                    value: 'H',
                    left: null,
                    right: null
                },
                right: {
                    type: 'node',
                    value: 'K',
                    left: null,
                    right: null
                }
            },
            right: null
        }
    }
};

// 先序遍历
function preorder(data) {
    if (!data) {
        return [];
    }
    if (data.type === 'node') {
        return [data.value];
    } else {
        return [data.value, ...arguments.callee(data.left), ...arguments.callee(data.right)];
    }
}

// 中序遍历
function inorder(data) {
    if (!data) {
        return [];
    }
    if (data.type === 'node') {
        return [data.value];
    } else {
        return [...arguments.callee(data.left), data.value, ...arguments.callee(data.right)];
    }
}

// 后序遍历
function postorder(data) {
    if (!data) {
        return [];
    }
    if (data.type === 'node') {
        return [data.value];
    } else {
        return [...arguments.callee(data.left), ...arguments.callee(data.right), data.value,];
    }
}
console.log(preorder(data)); // ["A", "B", "C", "D", "E", "F", "G", "H", "K"]
console.log(inorder(data)); // ["B", "D", "C", "A", "E", "H", "G", "K", "F"]
console.log(postorder(data)); // ["D", "C", "B", "H", "K", "G", "F", "E", "A"]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/625778
推荐阅读
相关标签
  

闽ICP备14008679号