二叉树先、中、后序排序(算法)
public class TwoTree{ List<Integer> pre = new ArrayList<Integer>();//存储先序遍历后节点 List<Integer> in = new ArrayList<Integer>();//存储中序遍历后节点 List<Integer> post = new ArrayList<Integer>();//存储后序遍历后节点 public int[][] sortTree(TreeNode root){ if(root==null){ return new int[][]{{}};//若为空,返回空数组 } List<List<Integer>> restList = new ArrayList<>();//存储所有排序后列表
preOrder(root); inOrder(root); postOrder(root);
restList.add(pre);
restList.add(in);
restList.add(post); int arr[][] = new arr[restList.size()][restList.get(0).size()];//返回排序后的二维数组 for(int i=0;i<restList.size();i++){ for(int j=0;j<restList.get(0).size();j++){ arr[i][j] = restList.get(i).get(j); } } return arr; }
//先序遍历 public void preOrder(TreeNode root){ if(root==null) return; pre.add(root.val); preOrder(root.left); preOrder(root.right); }
//中序遍历 public void inOrder(TreeNode root){ if(root==null) return; inOrder(root.left); in.add(root.val); inOrder(root.right); }
//后序遍历 public void postOrder(TreeNode root){ if(root==null) return; postOrder(root.left); postOrder(root.right); post.add(root.val); } }
代码分析
先序遍历:中-左-右(1 2 4 5 3)
中序遍历:左-中-右(4 2 5 1 3)
后序遍历:左-右-中(4 5 2 3 1)

浙公网安备 33010602011771号