【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]");