import java.util.Scanner;
class mian {
// 定义树的结构
static class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode() {}
TreeNode(int x) {
val = x;
}
TreeNode(int val, TreeNode left, TreeNode right) {
this.val = val;
this.left = left; this.right = right;
}
}
public static void main(String[] args){
// 输入一个数组建立二叉树
System.out.println("请输入一个数字序列,例如:3,2,6,3,3,4,5,6,7,8,7,6");
Scanner sc = new Scanner(System.in);
String userInputStr = sc.next();
String[] strArray = userInputStr.split(",");
Integer[] intArray = new Integer[strArray.length];
// 将输入的字符串数组转化为整数数组
for (int i = 0; i < strArray.length; i++ ) {
intArray[i] = Integer.parseInt(strArray[i]);
}
TreeNode tree = createTreeNode(intArray);
System.out.print("树的先序遍历序列为:");
preOrder(tree);
}
// 二叉树的先序遍历的递归算法
public static void preOrder(TreeNode treeNode) {
if (treeNode != null) {
System.out.print(treeNode.val + " ");
preOrder(treeNode.left);
preOrder(treeNode.right);
}
}
// 根据数组创建二叉树
public static TreeNode createTreeNode(Integer[] array){
TreeNode root = createTreeNode(array, 1);
return root;
}
// 根据数组索引创建二叉树
private static TreeNode createTreeNode(Integer[] array, int index) {
if(index > array.length){
return null;
}
Integer value = array[index - 1];
if(value == null){
return null;
}
TreeNode node = new TreeNode(value);
node.left = createTreeNode(array, index * 2);
node.right = createTreeNode(array, index * 2 + 1);
return node;
}
}
二叉树的先序遍历的递归算法-java
最新推荐文章于 2022-12-27 14:25:30 发布