【Java】字符串转二叉树,一个方便的java类

简介

力扣的核心代码模式在面对本题这类二叉树问题时,本地调试就十分折磨。写了一个TreeMaker类,可实现将力扣的层序遍历的二叉树字符串转化成二叉树数据结构。分享给大家。

二叉树节点,比里扣的多了个空构造方法

public class TreeNode {
          
   
   int val = 0;
   TreeNode left = null;
   TreeNode right = null;
   public TreeNode(int val) {
          
   
     this.val = val;
   }

     public TreeNode() {
          
   
     }
 }

TreeMaker类

public class TreeMaker {
          
   
    public TreeNode retree(String s){
          
   
        String rs = s.substring(1,s.length()-1);
        String[] valarr = rs.split(",");
        int len = valarr.length;
        int i = 0;
        TreeNode head = new TreeNode(renumber(valarr[i]));
        Deque<TreeNode> deque = new LinkedList<>();
        deque.addLast(head);
        i++;
        while (i<len){
          
   
            TreeNode root = deque.pollFirst();
            if(i<len&&!"null".equals(valarr[i])){
          
   
                root.left = new TreeNode(renumber(valarr[i]));
                deque.addLast(root.left);

            }
            i++;
            if(i<len&&!"null".equals(valarr[i])){
          
   
                root.right = new TreeNode(renumber(valarr[i]));
                deque.addLast(root.right);
            }
            i++;
        }


        return  head;
    }
    private int renumber(String s){
          
   
        char[] arr = s.toCharArray();
        int res = 0;
        for(int i = 0;i<arr.length;i++){
          
   
            res = res*10+(int)(arr[i]-0);
        }
        return res;
    }
}

用例

TreeMaker treeMaker = new TreeMaker();
        treeMaker.retree("[5,1,4,null,null,3,6]");
经验分享 程序员 微信小程序 职场和发展