根据二维数组创建二叉树Java
在LeetCode刷题的时候,遇到二叉树的题目,想要自己在Idea上调试,发现不会创建二叉树。查了资料后,记录一下,根据二维数组递归创建二叉树。
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
public TreeNode createBTree(int[] array, int index) {
TreeNode tn = null;
if (index < array.length) {
int value = array[index];
//如果当前数组值为-1则说明该节点为空
if (array[index] == -1) {
return tn;
}
// 根节点
tn = new TreeNode(value);
// 递归建立左孩子节点
tn.left = createBTree(array, 2 * index + 1);
// 递归建立右孩子节点
tn.right = createBTree(array, 2 * index + 2);
}
return tn;
}
测试
public static void main(String[] args) {
int[] tree = new int[]{3, 9, 20, -1, -1, -1, 7};
TreeNode root = new TreeNode().createBTree(tree, 0);
//前序遍历
new TreeNode().preOrder(root);
System.out.println();
//中序遍历
new TreeNode().inOrder(root);
System.out.println();
//后序遍历
new TreeNode().postOrder(root);
}


版权声明:本文为qq_35253136原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。