功能:给定一个数组,由此生成一棵二叉树。
分解:
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);
}
}
本文介绍了一种通过数组生成二叉树的方法。主要分为两部分:一是将单个节点添加到二叉树中;二是将整个数组转换为二叉树结构。通过递归方式实现了节点的插入,并采用线性遍历来处理数组。
1万+

被折叠的 条评论
为什么被折叠?



