问题

分别按照二叉树先序,中序和后序打印所有的节点

示例
输入:{1,2,3}
返回值:[[1,2,3],[2,1,3],[2,3,1]]

思路

  1. import java.util.*;
  2. /*
  3. * public class TreeNode {
  4. * int val = 0;
  5. * TreeNode left = null;
  6. * TreeNode right = null;
  7. * }
  8. */
  9. public class Solution {
  10. /**
  11. *
  12. * @param root TreeNode类 the root of binary tree
  13. * @return int整型二维数组
  14. */
  15. public int[][] threeOrders (TreeNode root) {
  16. // write code here
  17. List<Integer> list1 = new ArrayList<>();
  18. List<Integer> list2 = new ArrayList<>();
  19. List<Integer> list3 = new ArrayList<>();
  20. preOrder(root, list1);
  21. inOrder(root, list2);
  22. postOrder(root, list3);
  23. int[][] res = new int[3][list1.size()];
  24. for(int i = 0; i < list1.size(); i++){
  25. res[0][i] = list1.get(i);
  26. res[1][i] = list2.get(i);
  27. res[2][i] = list3.get(i);
  28. }
  29. return res;
  30. }
  31. // 先序遍历
  32. public void preOrder(TreeNode root, List<Integer> list){
  33. if(root == null){
  34. return;
  35. }
  36. list.add(root.val);
  37. preOrder(root.left, list);
  38. preOrder(root.right, list);
  39. }
  40. // 中序遍历
  41. public void inOrder(TreeNode root, List<Integer> list){
  42. if(root == null){
  43. return;
  44. }
  45. inOrder(root.left, list);
  46. list.add(root.val);
  47. inOrder(root.right, list);
  48. }
  49. // 后序遍历
  50. public void postOrder(TreeNode root, List<Integer> list){
  51. if(root == null){
  52. return;
  53. }
  54. postOrder(root.left, list);
  55. postOrder(root.right, list);
  56. list.add(root.val);
  57. }
  58. }