using System;
using System.Collections.Generic;
/*
public class TreeNode
{
public int val;
public TreeNode left;
public TreeNode right;
public TreeNode (int x)
{
val = x;
}
}
*/
class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param root TreeNode类 the root of binary tree
* @return int整型二维数组
*/
public List<List<int>> threeOrders (TreeNode root) {
// write code here
List<List<int>> ans=new List<List<int>>();
//先序
var a=new List<int>();
var b=new List<int>();
var c=new List<int>();
Parse1(root,ref a);
Parse2(root,ref b);
Parse3(root,ref c);
ans.Add(a);
ans.Add(b);
ans.Add(c);
return ans;
}
void Parse1(TreeNode root,ref List<int> L)
{
if(root==null)
return;
L.Add(root.val);
Parse1(root.left,ref L);
Parse1(root.right, ref L);
}
void Parse2(TreeNode root,ref List<int> L)
{
if(root==null)
return;
Parse2(root.left,ref L);
L.Add(root.val);
Parse2(root.right, ref L);
}
void Parse3(TreeNode root,ref List<int> L)
{
if(root==null)
return;
Parse3(root.left,ref L);
Parse3(root.right, ref L);
L.Add(root.val);
}
}
遍历的基本功就不说了,用递归好做,不用递归麻烦点。重在理解三种顺序