功能:给定一个数组,由此生成一棵二叉树。
分解:
1.考虑将一个节点加入树中,使用递归。
2.考虑如何将整个数组依次加入树中,线性遍历。
public class CreateBinaryTree { /** * 将一个节点加入二叉树 * @param val * @param head * @return */ public TreeNode addNode(int val, TreeNode head){ if(head == null) { head = new TreeNode(val); return head; } if(head.val >= val){ head.left = addNode(val ,head.left); } else { head.right = addNode(val, head.right); } return head; } /** * 将整个数组的元素依次加入二叉树 * @param arr * @return */ public TreeNode createTree(int[] arr){ if(arr == null || arr.length < 1) { return null; } TreeNode head = new TreeNode(arr[0]); TreeNode point = head; for(int i = 1; i < arr.length; i++){ addNode(arr[i], point); } return head; } public void printTree(TreeNode head) { if(head == null) return; System.out.println(head.val); printTree(head.left); printTree(head.right); } public static void main(String[] args) { int[] arr = {4,100,23,30,200,55,2,1000,7}; CreateBinaryTree createBinaryTree = new CreateBinaryTree(); TreeNode head = createBinaryTree.createTree(arr); createBinaryTree.printTree(head); } }