java用链式表创建树
时间: 2024-04-29 22:25:55 浏览: 58
java基于链表实现树结构(算法源码)
4星 · 用户满意度95%
链式表可以很方便地创建树,具体步骤如下:
1. 定义节点类
```java
public class TreeNode {
private int val;
private TreeNode left;
private TreeNode right;
public TreeNode(int val) {
this.val = val;
}
public int getVal() {
return val;
}
public void setVal(int val) {
this.val = val;
}
public TreeNode getLeft() {
return left;
}
public void setLeft(TreeNode left) {
this.left = left;
}
public TreeNode getRight() {
return right;
}
public void setRight(TreeNode right) {
this.right = right;
}
}
```
2. 创建树
可以使用链式表来表示一棵树,每个节点包含自身的值和左右子节点的引用。
例如,下面的链式表表示一棵二叉树:
```
1 -> 2 -> 3 -> 4 -> 5 -> null
```
其中,1为根节点,2为1的左子节点,3为1的右子节点,4为2的左子节点,5为2的右子节点。
可以通过遍历链式表,依次创建每个节点,并将其作为上一个节点的左或右子节点。
```java
public TreeNode createTree(ListNode head) {
if (head == null) {
return null;
}
Queue<TreeNode> queue = new LinkedList<>();
TreeNode root = new TreeNode(head.getVal());
queue.offer(root);
ListNode cur = head.getNext();
while (cur != null && !queue.isEmpty()) {
TreeNode node = queue.poll();
if (cur != null) {
TreeNode left = new TreeNode(cur.getVal());
node.setLeft(left);
queue.offer(left);
cur = cur.getNext();
}
if (cur != null) {
TreeNode right = new TreeNode(cur.getVal());
node.setRight(right);
queue.offer(right);
cur = cur.getNext();
}
}
return root;
}
```
其中,ListNode表示链表节点的类,它包含一个整数值和下一个节点的引用。Queue用于遍历树节点。
阅读全文