一. 概念
1. 什么是二叉树?
二叉树(Binary tree)是树形结构的一个重要类型。 是指树中节点的度不大于2的有序树,它是一种最简单且最重要的树。 二叉树的递归定义为: 二叉树是一棵空树,或者是一棵由一个根节点和两棵互不相交的, 分别称作根的左子树和右子树组成的非空树;左子树和右子树又同样都是二叉树
2. 什么是中序遍历?
- 二叉树有广度优先遍历和深度优先遍历方式,其中深度优先遍历又分为,前序遍历,中序遍历,后序遍历。
- 前序遍历:根节点----> 左子树 ----> 右子树
- 中序变遍历:左子树---> 根结点 ---> 右子树
- 后序遍历:根节点----> 右子树 ----> 左子树
3. 可以用哪些方式遍历一颗二叉树?
- 递归:代码明了,好理解
- 栈的结构:速度快
二. 题目
三. 解题
/**
* 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
}
四. 理解
先这样,在那样,然后在这样。