题目描述
分别按照二叉树先序,中序和后序打印所有的节点。
示例1
输入
{1,2,3}
输出
[[1,2,3],[2,1,3],[2,3,1]]
import java.util.*;/** public class TreeNode {* int val = 0;* TreeNode left = null;* TreeNode right = null;* }*/public class Solution {private int preIndex = 0;private int midIndex = 0;private int lastIndex = 0;/*** * @param root TreeNode类 the root of binary tree* @return int整型二维数组*/public int[][] threeOrders (TreeNode root) {int treeNodesNum = getTotalTreeNodeNum(root);//因为就前、中、后 输出 所以就相当于{{前},{中},{后}}//treeNodesNum 算出整棵树的节点个数int[][] result = new int[3][treeNodesNum];pre(root,result);mid(root,result);last(root,result);return result;}public int getTotalTreeNodeNum(TreeNode root){if(root == null){return 0;}return 1 + getTotalTreeNodeNum(root.left) + getTotalTreeNodeNum(root.right);}public void pre(TreeNode root,int[][] result){if(root == null){return;}result[0][preIndex++] = root.val;pre(root.left,result);pre(root.right,result);}public void mid(TreeNode root,int[][] result){if(root == null){return;}mid(root.left,result);result[1][midIndex++] = root.val;mid(root.right,result);}public void last(TreeNode root,int[][] result){if(root == null){return;}last(root.left,result);last(root.right,result);result[2][lastIndex++] = root.val; }
}