1 public class TreeNode { 2 public int val; 3 public TreeNode left; 4 public TreeNode right; 5 private TreeNode(int x) { val = x; } 6 7 public static TreeNode makeTree(Integer[] trees) { 8 TreeNode[] treeNodes = new TreeNode[trees.length + 1]; 9 for (int i = 1; i < treeNodes.length; i++) { 10 if (trees[i - 1] == null) { 11 treeNodes[i] = null; 12 } else { 13 treeNodes[i] = new TreeNode(trees[i - 1]); 14 } 15 } 16 17 TreeNode treeNode = null; 18 for (int i = 1; i <= treeNodes.length / 2; i++) { 19 treeNode = treeNodes[i]; 20 if (treeNode == null) continue; 21 treeNode.left = treeNodes[2 * i]; 22 if (2 * i + 1 < treeNodes.length) 23 treeNode.right = treeNodes[2 * i + 1]; 24 } 25 return treeNodes[1]; 26 } 27 28 //中序遍历,检查树的创建是否正确 29 public static void middleTraverse(TreeNode treeNode) { 30 if (treeNode != null) { 31 System.out.println(treeNode.val); 32 middleTraverse(treeNode.left); 33 middleTraverse(treeNode.right); 34 } else { 35 System.out.println("null"); 36 } 37 } 38 }
调用makeTree将数组转换为一棵树
1 Integer[] integers = {1, 2, null, 8}; 2 TreeNode treeNode = TreeNode.makeTree(integers); 3 //遍历打印 4 TreeNode.middleTraverse(treeNode);
原文:https://www.cnblogs.com/grein/p/11943816.html