LeetCode 数据结构入门 day 10 - 树

122 阅读2分钟

这是我参与2022首次更文挑战的第10天,活动详情查看:2022首次更文挑战

二叉树的前序遍历

原题地址

题目

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

示例 1:

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

示例 2:

输入:root = []
输出:[]

示例 3:

输入:root = [1]
输出:[1]

示例 4:

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

示例 5:

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

方法

思路:

  1. 先将 根节点 放入 res
  2. 再将 左节点 放入 res
  3. 再放入 右节点

代码:

/**
 * 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) {
    if(root === null) return []
    let res = []
    res.push(root.val)
    if(root.left)    res = res.concat(preorderTraversal(root.left))
    if(root.right)    res = res.concat(preorderTraversal(root.right))
    return res
};

结果:

  • 执行结果: 通过
  • 执行用时:64 ms, 在所有 JavaScript 提交中击败了82.22%的用户
  • 内存消耗:41.3 MB, 在所有 JavaScript 提交中击败了6.81%的用户
  • 通过测试用例:69 / 69

二叉树的中序遍历

原题地址

题目

给定一个二叉树的根节点 root ,返回它的 中序 遍历。

示例 1:

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

示例 2:

输入:root = []
输出:[]

示例 3:

输入:root = [1]
输出:[1]

示例 4:

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

示例 5:

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

解题方法

思路:

  1. 先将 左节点 放入 res
  2. 再将 根节点 放入 res
  3. 再放入 右节点

代码:

/**
 * 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 inorderTraversal = function(root) {
    if(root === null) return []
    let res = []
    if(root.left)    res = res.concat(inorderTraversal(root.left))
    res.push(root.val)
    if(root.right)    res = res.concat(inorderTraversal(root.right))
    return res
};

结果:

  • 执行结果: 通过
  • 执行用时:60 ms, 在所有 JavaScript 提交中击败了92.06%的用户
  • 内存消耗:41.4 MB, 在所有 JavaScript 提交中击败了6.08%的用户
  • 通过测试用例:70 / 70

二叉树的后序遍历

原题地址

题目

给定一个二叉树的根节点 root ,返回它的 后序 遍历。

示例 1:

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

示例 2:

输入:root = []
输出:[]

示例 3:

输入:root = [1]
输出:[1]

解题方法

思路:

  1. 先将 左节点 放入 res
  2. 再将 右节点 放入 res
  3. 再放入 根节点

代码:

/**
 * 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 postorderTraversal = function(root) {
    if(root === null) return []
    let res = []
    if(root.left)    res = res.concat(postorderTraversal(root.left))
    if(root.right)    res = res.concat(postorderTraversal(root.right))
    res.push(root.val)
    return res
};

结果:

  • 执行结果: 通过
  • 执行用时:64 ms, 在所有 JavaScript 提交中击败了83.08%的用户
  • 内存消耗:41.5 MB, 在所有 JavaScript 提交中击败了5.04%的用户
  • 通过测试用例:68 / 68

— END