Leetcode刷题(第144题)——二叉树的前序遍历

x33g5p2x  于2022-03-14 转载在 其他  
字(1.0k)|赞(0)|评价(0)|浏览(327)

一、题目

给你二叉树的根节点 root ,返回它节点值的 前序 遍历。

二、示例

输入:root = [1,null,2,3]
输出:[1,2,3]
输入:root = []
输出:[]
输入:root = [1]
输出:[1]

三、思路
本题最基本的是思路是递归算法,也可以使用非递归算法。下面将从两种算法思路中去进行解题。
四、代码
递归算法

/**
 * Definition for a binary tree node.
 * function TreeNode(val, left, right) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.left = (left===undefined ? null : left)
 *     this.right = (right===undefined ? null : right)
 * }
 */
/**
 * @param {TreeNode} root
 * @return {number[]}
 */
var preorderTraversal = function(root) {
    const arr = []
    if(!root) return arr
    const preorder = (node) => {
        arr.push(node.val)
        if(node.left) preorder(node.left)
        if(node.right) preorder(node.right)
    }
    preorder(root)
    return arr
};

非递归算法

/**
 * Definition for a binary tree node.
 * function TreeNode(val, left, right) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.left = (left===undefined ? null : left)
 *     this.right = (right===undefined ? null : right)
 * }
 */
/**
 * @param {TreeNode} root
 * @return {number[]}
 */
var preorderTraversal = function(root) {
    let arr = []
    if(!root) return arr
    let stack = [root]
    while(stack.length) {
        let cur = stack.pop()
        arr.push(cur.val)
        if(cur.right) stack.push(cur.right)
        if(cur.left) stack.push(cur.left)
    } 
    return arr
};

五、总结
递归

非递归

相关文章