力扣----8. 二叉树的中序遍历(JavaScript, Java实现)
题目描述:
给定一个二叉树,返回它的中序 遍历。
示例:
输入: [1,null,2,3]
1
\
2
/
3
输出: [1,3,2]
JavaScript实现
递归
/** * 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) { if(!root) return []; return [...inorderTraversal(root.left), root.val, ...inorderTraversal(root.right)] };
非递归
/** * 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) { const [noVisit, visited] = [0, 1]; let res = []; const stack = [[noVisit, root]]; while(stack.length){ let [isVisited, root] = stack.pop(); if(!root) continue if(!isVisited) { stack.push([noVisit, root.right]) stack.push([visited, root]) stack.push([noVisit, root.left]) }else{ res.push(root.val) } } return res; };
Java实现:
待补充