LeetCode 144 94 590 二叉樹的前序、中序、後序遍歷
阿新 • • 發佈:2020-08-09
1. 總覽
2. 題目
2.1 二叉樹的前序遍歷
給定一個二叉樹,返回它的 前序 遍歷。
示例:
輸入: [1,null,2,3]
1
2
/
3
輸出: [1,2,3]
進階: 遞迴演算法很簡單,你可以通過迭代演算法完成嗎?
2.2 二叉樹的中序遍歷
給定一個二叉樹,返回它的中序 遍歷。
示例:
輸入: [1,null,2,3]
1
2
/
3
輸出: [1,3,2]
進階: 遞迴演算法很簡單,你可以通過迭代演算法完成嗎?
2.3 二叉樹的後序遍歷
給定一個二叉樹,返回它的 後序 遍歷。
示例:
輸入: [1,null,2,3]
1
2
/
3
輸出: [3,2,1]
進階: 遞迴演算法很簡單,你可以通過迭代演算法完成嗎?
解法
1. 最普通的遞迴
1. 前序遍歷
/** * Definition for a binary tree node. * function TreeNode(val) { * this.val = val; * this.left = this.right = null; * } */ /** * @param {TreeNode} root * @return {number[]} */ var preorderTraversal = function(root) { let nums = []; let func = (root) => { nums.push(root.val); root.left && func(root.left); root.right && func(root.right); } root && func(root); return nums; };
2. 中序遍歷
/** * Definition for a binary tree node. * function TreeNode(val) { * this.val = val; * this.left = this.right = null; * } */ /** * @param {TreeNode} root * @return {number[]} */ var inorderTraversal = function(root) { let nums = []; let func = (root) => { root.left && func(root.left); nums.push(root.val); root.right && func(root.right); } root && func(root); return nums; };
後序遍歷
/**
* Definition for a binary tree node.
* function TreeNode(val) {
* this.val = val;
* this.left = this.right = null;
* }
*/
/**
* @param {TreeNode} root
* @return {number[]}
*/
var postorderTraversal = function(root) {
let nums = [];
let func = (root) => {
root.left && func(root.left);
root.right && func(root.right);
nums.push(root.val);
}
root && func(root);
return nums;
};