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

复制代码
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 @   Q子  阅读(134)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!
点击右上角即可分享
微信分享提示