【算法】二叉树的四种遍历
二叉树的四种遍历
分为「前序」、「中序」、「后序」、「层序」四种遍历。
前序遍历
先序遍历是按照根节点 -> 左孩子 -> 右孩子的方式遍历,遍历结果是
1 2 4 5 3 6 7
中序遍历
中序序遍历是按照左孩子 -> 根节点 -> 右孩子的方式遍历,遍历结果为
4 2 51 6 3 7;
后序遍历
后序序遍历是按照左孩子 -> 右孩子 -> 根节点 的方式遍历,遍历结果为
4 5 2 6 7 3 1;
层序遍历
层次遍历就是按照每一层从左向右的方式进行遍历,遍历结果为
1 2 3 4 5 6 7。
LeetCode算法题目--前序遍历
题目
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-tree-preorder-traversal/
给你二叉树的根节点 root ,返回它节点值的 前序 遍历。
解答
根据前序遍历规则,先遍历根节点【result.push(node.val)】,在遍历左节点【preOrderTraverseNode(node.left)】,再遍历右节点【preOrderTraverseNode(node.right)】
/*** @param {TreeNode} root* @return {number[]}*/var preorderTraversal = function(root) {let result = []var preOrderTraverseNode = function(node){if(node) {result.push(node.val)preOrderTraverseNode(node.left)preOrderTraverseNode(node.right)}}preOrderTraverseNode(root)return result};
LeetCode算法题目--后序遍历
题目
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-tree-postorder-traversal/
给你一棵二叉树的根节点 root ,返回其节点值的 后序遍历 。
解答
根据后序遍历规则,左孩子【postorderTraversal(node.left)】 -> 右孩子【postorderTraversal(node.right)】 -> 根节点【result.push(node.val)】
var postorderTraversal = function(root) {let result = []var postorderTraversal = function(node){if(node) {postorderTraversal(node.left)postorderTraversal(node.right)result.push(node.val)}}postorderTraversal(root)return result};
LeetCode算法题目--中序遍历
题目
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-tree-inorder-traversal/
给定一个二叉树的根节点 root ,返回它的中序遍历 。
解答
根据中序遍历规则,左孩子【postorderTraversal(node.left)】 -> 根节点【result.push(node.val)】 -> 右孩子【postorderTraversal(node.right)】
/*** @param {TreeNode} root* @return {number[]}*/var inorderTraversal = function(root) {let result = []var postorderTraversal = function(node){if(node) {postorderTraversal(node.left)result.push(node.val)postorderTraversal(node.right)}}postorderTraversal(root)return result};
LeetCode算法题目--层序遍历
题目
来源:力扣(LeetCode)链接:https://leetcode.cn/problems/binary-tree-level-order-traversal/
给你二叉树的根节点 root ,返回其节点值的 层序遍历 。(即逐层地,从左到右访问所有节点)。
解答
根据层序遍历规则,需要一层层去遍历,注意输出的是二维数组,空二叉树时候返回[], 定义返回值res,和数组队列queue。遍历每一层元素,并把每一层元素添加到res里。
/*** @param {TreeNode} root* @return {number[][]}*/var levelOrder = function(root) {if(root == null) return [];const queue = [];const res = [];queue.push(root);while (queue.length) {const arr = []; // 当前层元素const n = queue.length;for(let i = 0; i < n; i++){const node = queue.shift();arr.push(node.val);if(node.left) queue.push(node.left);if(node.right) queue.push(node.right);}res.push(arr);}return res;};
-End-
喜欢就奖励一个“👍”和“在看”呗~
