二叉树的建立 (运用先序序列来创建)
时间: 2023-11-13 07:02:34 浏览: 23
二叉树的建立可以通过先序序列来完成,具体步骤如下:
1. 定义二叉树节点的数据结构,包括节点的值和左右子节点。
2. 读入先序序列,以空格或者其他分隔符分隔每个节点的值。
3. 递归创建二叉树,按照先序序列的顺序添加节点。
4. 若当前节点的值为null,则返回null;否则,创建一个新的节点,并将该节点的值设置为当前节点的值。
5. 递归创建当前节点的左子树,将左子树的根节点设置为当前节点的左子节点。
6. 递归创建当前节点的右子树,将右子树的根节点设置为当前节点的右子节点。
7. 返回当前节点。
例如,对于先序序列1 2 null null 3 4 null null 5 null null,可以按照以下步骤来创建二叉树:
1. 定义二叉树节点的数据结构:
```
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
```
2. 读入先序序列:
```
String[] preorder = {"1", "2", "null", "null", "3", "4", "null", "null", "5", "null", "null"};
```
3. 递归创建二叉树:
```
public TreeNode createTree(String[] preorder) {
if (preorder == null || preorder.length == 0) {
return null;
}
return createTreeHelper(preorder, new int[]{0});
}
public TreeNode createTreeHelper(String[] preorder, int[] index) {
String val = preorder[index[0]++];
if (val.equals("null")) {
return null;
}
TreeNode node = new TreeNode(Integer.parseInt(val));
node.left = createTreeHelper(preorder, index);
node.right = createTreeHelper(preorder, index);
return node;
}
```
4. 调用createTree方法来创建二叉树:
```
TreeNode root = createTree(preorder);
```
最终得到的二叉树如下所示:
```
1
/ \
2 3
/ \
4 5
```