二叉树的前序、中序、后序遍历指的是对于根节点的顺序
采用递归的方式解决,两个判断左右非null的语句+读取当前节点的语句
import java.util.*;
/*
* public class TreeNode {
* int val = 0;
* TreeNode left = null;
* TreeNode right = null;
* }
*/
public class Solution {
/**
*
* @param root TreeNode类 the root of binary tree
* @return int整型二维数组
*/
List<Integer> list = new ArrayList<Integer>();
public int[][] threeOrders (TreeNode root) {
// write code here
preOlder(root);
int len = list.size();
int[][] nums = new int[3][len];
int i=0;
for(int n:list){
nums[0][i] = n;
i++;
}
list.clear();
i=0;
midOlder(root);
for(int n:list){
nums[1][i] = n;
i++;
}
list.clear();
i=0;
postOlder(root);
for(int n:list){
nums[2][i] = n;
i++;
}
list.clear();
i=0;
return nums;
}
public void preOlder(TreeNode root){
list.add(root.val);
if(root.left!=null)
preOlder(root.left);
if(root.right!=null)
preOlder(root.right);
}
public void midOlder(TreeNode root){
if(root.left!=null)
midOlder(root.left);
list.add(root.val);
if(root.right!=null)
midOlder(root.right);
}
public void postOlder(TreeNode root){
if(root.left!=null)
postOlder(root.left);
if(root.right!=null)
postOlder(root.right);
list.add(root.val);
}
}
京公网安备 11010502036488号