LeetCode第一天:94、二叉树的中序遍历

116 阅读1分钟

一. 概念

1. 什么是二叉树?

二叉树(Binary tree)是树形结构的一个重要类型。 是指树中节点的度不大于2的有序树,它是一种最简单且最重要的树。 二叉树的递归定义为: 二叉树是一棵空树,或者是一棵由一个根节点和两棵互不相交的, 分别称作根的左子树和右子树组成的非空树;左子树和右子树又同样都是二叉树

2. 什么是中序遍历?

  • 二叉树有广度优先遍历和深度优先遍历方式,其中深度优先遍历又分为,前序遍历,中序遍历,后序遍历。
  • 前序遍历:根节点----> 左子树 ----> 右子树
  • 中序变遍历:左子树---> 根结点 ---> 右子树
  • 后序遍历:根节点----> 右子树 ----> 左子树

3. 可以用哪些方式遍历一颗二叉树?

  • 递归:代码明了,好理解
  • 栈的结构:速度快

二. 题目

image.png

三. 解题

/**
 * 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)
 * }
 */
 // 递归的方式
 const inorderTraversal = root => {
     // 定义结果数组
     const result = []
     // 定义递归方法,用来遍历节点
     const inorder = root => {
         // 递归的出口
         if(root === null){
             return
         }
         // 遍历左子树
         inorder(root.left)
         // 存储当前的值
         result.push(root.val)
         // 遍历右子树
         inorder(root.right)
     }
     // 调用遍历方法
     inorder(root)
     // 返回结果
     return result
 }

四. 理解

先这样,在那样,然后在这样。