一、题目内容

image.png

二、题解

解法1:

思路

同时打印前中后序,通过递归可以一次全部打印,如果递归无法满足时间长度,则可以通过栈分别实现

代码

  1. public class Solution {
  2. /**
  3. *
  4. * @param root TreeNode类 the root of binary tree
  5. * @return int整型二维数组
  6. */
  7. public int[][] threeOrders (TreeNode root) {
  8. // write code here
  9. List<Integer> preOrder = new ArrayList<>();
  10. List<Integer> inOrder = new ArrayList<>();
  11. List<Integer> postOrder = new ArrayList<>();
  12. doThreeOrders(root,preOrder,inOrder,postOrder);
  13. int[][] res = new int[3][preOrder.size()];
  14. for(int i = 0; i < preOrder.size(); i++){
  15. res[0][i] = preOrder.get(i);
  16. res[1][i] = inOrder.get(i);
  17. res[2][i] = postOrder.get(i);
  18. }
  19. return res;
  20. }
  21. public void doThreeOrders(TreeNode root,List<Integer> preOrder,List<Integer> inOrder,List<Integer> postOrder){
  22. if(root == null){
  23. return;
  24. }
  25. preOrder.add(root.val);
  26. doThreeOrders(root.left,preOrder,inOrder,postOrder);
  27. inOrder.add(root.val);
  28. doThreeOrders(root.right,preOrder,inOrder,postOrder);
  29. postOrder.add(root.val);
  30. }
  31. }