给定一个二叉树的根节点 root
,返回 它的 中序 遍历 。
示例 1:
输入:root = [1,null,2,3]
输出:[1,3,2]
示例 2:
输入:root = []
输出:[]
示例 3:
输入:root = [1]
输出:[1]
提示:
- 树中节点数目在范围
[0, 100]
内 -100 <= Node.val <= 100
进阶: 递归算法很简单,你可以通过迭代算法完成吗?
思路:
二叉树的中序遍历的方法为:依次遍历左子树、根结点和右子树,对于左子树和右子树使用同样的方法遍历。
递归的终止条件是当前结点为空。对于非终止条件,递归的做法如下。
对当前结点的左子树调用递归。
将当前结点的结点值加入中序遍历序列。
对当前结点的右子树调用递归。
遍历结束之后即可得到中序遍历序列。
代码:C#
public class Solution {
public IList<int> InorderTraversal(TreeNode root) {
IList<int> ans=new List<int>();//用于存储遍历结果
Recursive(root,ans);//将根节点和结果列表传入
return ans;//返回最终结果
}
public void Recursive(TreeNode node,IList<int> ans)
{
if(node==null)
return;//递归的结束条件为节点为空
Recursive(node.left,ans);//先递归遍历左子树
ans.Add(node.val);//将当前节点的值保存
Recursive(node.right,ans);//在递归遍历右子树
}
}