leetcode 二叉树的遍历方式

83 阅读1分钟

解法:递归

思路:二叉树的遍历方式有深度优先和广度优先两种,本次探讨的是二叉树的深度优先,其中深度优先中有前、中、后序遍历法他们其实是有规律的

前序遍历:中左右。 先遍历二叉树的中间节点(每一层的根节点),添加到栈中,然后遍历根节点的左节点,(加入栈中)如果左节点还有子节点,则递归,否则再遍历跟的右节点,形成一套递归的流程

var preorderTraversal = function(root) {
    let stack = []
    function deepRoot (root) {
        if (!root) return
        stack.push(root.val)
        deepRoot(root.left)
        deepRoot(root.right)
    }
    deepRoot(root)
    return stack
};

中序遍历:左中右。遍历方式同上

var inorderTraversal = function(root) {
    let stack = []
    function deepRoot (root) {
        if (!root) return
        deepRoot(root.left)
        stack.push(root.val)
        deepRoot(root.right)
    }
    deepRoot(root)
    return stack
};

后序遍历:左右中,遍历方式同上

var postorderTraversal = function(root) {
    let stack = []
    function deepRoot (root) {
        if (!root) return
        deepRoot(root.left)
        deepRoot(root.right)
        stack.push(root.val) 
    }
    deepRoot(root)
    return stack
};