题目描述
- 二叉树的中序遍历 简单题
给定一个二叉树的根节点 root ,返回它的 中序 遍历。
解题思路
1. 前置知识 - 值传递和引用传递
值传递:方法调用时,实际参数把它的值传递给对应的形式参数,方法执行中形式参数值的改变不影响实际参数的值。
引用传递:也称为传地址。方法调用时,实际参数的引用(地址,而不是参数的值)被传递给方法中相对应的形式参数,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,方法执行中形式参数值的改变将会影响实际参数的值。
a.传递值的数据类型:八种基本数据类型和String(这样理解可以,但是事实上String也是传递的地址,只是string对象和其他对象是不同的,string对象是不能被改变的,内容改变就会产生新对象。那么StringBuffer就可以了,但只是改变其内容。不能改变外部变量所指向的内存地址)。
b.传递地址值的数据类型:除String以外的所有复合数据类型,包括数组、类和接口
2. 前置知识 - 前序遍历、中序遍历和后序遍历
前序遍历:根结点 —> 左子树 —> 右子树
中序遍历:左子树—> 根结点 —> 右子树
后序遍历:左子树 —> 右子树 —> 根结点
3. 本题思路
我们可以直接用递归函数来模拟这一过程。定义 inorder(root) 表示当前遍历到 root \textit{root} root 节点的答案,那么按照定义,我们只要递归调用 inorder(root.left) 来遍历 root \textit{root} root节点的左子树,然后将 root \textit{root} root节点的值加入答案,再递归调用inorder(root.right) 来遍历 root \textit{root} root节点的右子树即可,递归终止的条件为碰