LeetCode94. 二叉树的中序遍历
题目描述
/**
*
* 给定一个二叉树的根节点 root ,返回它的 中序 遍历。
*
*/
思路分析
- 二叉树的遍历方式有三种,即前序中序和后序,三者的不同在于根节点的遍历顺序
- 如果先遍历根节点,再遍历左子树然后遍历右子树则为前序遍历
- 如果先遍历左子树,再遍历根节点,最后遍历右子树,则为中序遍历
- 如果先遍历左子树,再遍历右子树,最后再遍历根节点,则为后序遍历
- 较为简单,源码见下
源码及分析
//创建集合保存中序遍历的结果
List<Integer> list = new ArrayList<>();
/**
* @param root 根节点
* @return 返回遍历的结果
*/
public List<Integer> inorderTraversal(TreeNode root) {
//判断过根节点是否为空
if (root == null) {
return list;
}
//判断左子树是否为空,如果不为空,则递归遍历左子树
if (root.left != null) {
inorderTraversal(root.left);
}
//将当前节点加入集合
list.add(root.val);
//再判断当前节点的右子树是否为空,如果不为空,则递归遍历右子树
if (root.right != null) {
inorderTraversal(root.right);
}
return list;
}
LeetCode94. 二叉树的中序遍历