这是我参与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]
方法
思路:
- 先将 根节点 放入
res中 - 再将 左节点 放入
res中 - 再放入 右节点
代码:
/**
* 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]
解题方法
思路:
- 先将 左节点 放入
res中 - 再将 根节点 放入
res中 - 再放入 右节点
代码:
/**
* 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]
解题方法
思路:
- 先将 左节点 放入
res中 - 再将 右节点 放入
res中 - 再放入 根节点
代码:
/**
* 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