java树状结构
Java中树状结构可以通过使用节点类来实现。每个节点都有一个值和对其的子节点的引用。以下是一个示例节点类:
class TreeNode {
int val;
TreeNode left;
TreeNode right;
public TreeNode(int val) {
this.val = val;
this.left = null;
this.right = null;
}
}
这个节点类包含一个整数值和两个子节点引用,左子节点和右子节点。左子节点存储比当前节点小的值,右子节点存储比当前节点大的值。
使用这个节点类,可以构建树状结构。以下是一个示例:
TreeNode root = new TreeNode(5);
root.left = new TreeNode(3);
root.right = new TreeNode(7);
root.left.left = new TreeNode(1);
root.left.right = new TreeNode(4);
root.right.left = new TreeNode(6);
root.right.right = new TreeNode(8);
这个树状结构包含七个节点,根节点是5,左子树包含3个节点,右子树包含3个节点。
可以通过遍历这个树状结构来访问每个节点。以下是深度优先遍历的示例代码:
public void dfs(TreeNode node) {
if (node == null) {
return;
}
System.out.print(node.val + " ");
dfs(node.left);
dfs(node.right);
}
这个代码将从根节点开始,先输出根节点的值,然后递归地遍历左子树和右子树。输出结果为:5 3 1 4 7 6 8。
还可以使用广度优先遍历来遍历树状结构。以下是一个示例代码:
public void bfs(TreeNode root) {
Queue<TreeNode> queue = new LinkedList<>();
queue.add(root);
while (!queue.isEmpty()) {
TreeNode node = queue.poll();
System.out.print(node.val + " ");
if (node.left != null) {
queue.add(node.left);
}
if (node.right != null) {
queue.add(node.right);
}
}
}
这个代码将从根节点开始,先输出根节点的值,然后遍历每个节点的左子节点和右子节点,将它们加入队列中。然后从队列中取出队首节点,输出它的值,继续遍历它的子节点。输出结果为:5 3 7 1 4 6 8
原文地址: https://www.cveoy.top/t/topic/eQaV 著作权归作者所有。请勿转载和采集!