力扣----8. 二叉树的中序遍历(JavaScript, Java实现)

时间:2020-06-10
本文章向大家介绍力扣----8. 二叉树的中序遍历(JavaScript, Java实现),主要包括力扣----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实现:

待补充

原文地址:https://www.cnblogs.com/manru75/p/13083785.html