# 67.Binary Tree Inorder Traversal-二叉树的中序遍历（容易题）

## 二叉树的中序遍历

1. ### 题目

给出一棵二叉树,返回其中序遍历

2. ### 样例

给出二叉树 {1,#,2,3},

1
\
2
/
3
返回 [1,3,2].

3. ### 题解

1.递归法

/**
* Definition of TreeNode:
* public class TreeNode {
*     public int val;
*     public TreeNode left, right;
*     public TreeNode(int val) {
*         this.val = val;
*         this.left = this.right = null;
*     }
* }
*/
public class Solution {
/**
* @param root: The root of binary tree.
* @return: Inorder in ArrayList which contains node values.
*/
private ArrayList<Integer> result = new ArrayList<Integer>();

public ArrayList<Integer> inorderTraversal(TreeNode root) {
if (root == null)
{
return result;
}
inorderTraversal(root.left);
inorderTraversal(root.right);
return result;
}
}

2.非递归法

1.对于任一结点P，若左子节点不为null，则将P入栈并将赋值为P的左子节点。
2.对于任一结点P，若其左子节点为null，则将P赋值为取栈顶节点后出栈，记录该结点后将P赋值为P的右子节点，直到P和栈都为null为止。

/**
* Definition of TreeNode:
* public class TreeNode {
*     public int val;
*     public TreeNode left, right;
*     public TreeNode(int val) {
*         this.val = val;
*         this.left = this.right = null;
*     }
* }
*/
public class Solution {
/**
* @param root: The root of binary tree.
* @return: Inorder in ArrayList which contains node values.
*/
public ArrayList<Integer> inorderTraversal(TreeNode root) {
ArrayList<Integer> result = new ArrayList<Integer>();
if (root == null)
{
return result;
}
Stack<TreeNode> stack = new Stack<>();
TreeNode p = root;
while (p!=null || !stack.empty())
{
while (p!=null)
{
stack.push(p);
p=p.left;
}
if (!stack.empty())
{
p = stack.peek();
stack.pop();
p = p.right;
}
}

return result;
}
}

Last Update 2016.8.29

• 本文已收录于以下专栏：

## LeetCode | Binary Tree Inorder Traversal（二叉树的中序遍历）

Given a binary tree, return the inorder traversal of its nodes' values. For example: Given binar...

## Leetcode 94：Binary Tree Inorder Traversal (二叉树中序遍历，非递归)

94. Binary Tree Inorder Traversal 提交地址： https://leetcode.com/problems/binary-tree-inorder-traversal/...

## 【leetcode 中序遍历】Binary Tree Inorder Traversal

1、题目 2、分析 3、代码

举报原因： 您举报文章：深度学习：神经网络中的前向传播和反向传播算法推导 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)