二叉树先、中、后序排序(算法)

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)

       

 

posted @ 2022-01-04 15:13  Q子  阅读(162)  评论(0)    收藏  举报