1.通过数组构造二叉树
private static TreeNode createTreeNode(Integer[] array, intindex) {
if(index >array.length){
return null;
}
Integer value = array[index - 1];
if(value == null){
return null;
}
TreeNode node = newTreeNode(value);
node.left = createTreeNode(array, index * 2);
node.right = createTreeNode(array, index * 2 + 1);
return node;
}
数组为[4,1,6,0,2,5,7,null,null,null,3,null,null,null,8]
2.遍历二叉树
public class TreeTest {
static List<Integer> result = new LinkedList<Integer>();
public static void main(String[] args) {
TreeTest test = new TreeTest();
preorderTraversal(test.node1);
for (int aaa : result) {
System.out.println(aaa);
}
}
// 前序遍历
public static List<Integer> preorderTraversal(TreeNode root) {
if (root == null) {
return result;
}
result.add(root.val);
preorderTraversal(root.left);
preorderTraversal(root.right);
return result;
}
// 中序遍历
public static List<Integer> inorderTraversal(TreeNode root) {
if (root == null) {
return result;
}
inorderTraversal(root.left);
result.add(root.val);
inorderTraversal(root.right);
return result;
}
// 后序遍历
public static List<Integer> postorderTraversal(TreeNode root) {
if (root == null) {
return result;
}
postorderTraversal(root.left);
postorderTraversal(root.right);
result.add(root.val);
return result;
}
}
class TreeNode {
int val;
TreeNode left;
TreeNode right;
}