java 遍历非二叉树
时间: 2023-11-28 09:00:52 浏览: 88
遍历非二叉树可以采用深度优先搜索(DFS)或广度优先搜索(BFS)的方式进行。
深度优先搜索可以采用递归或栈的方式实现。递归实现的代码如下:
```
public void dfs(TreeNode node) {
if (node == null) {
return;
}
visit(node);
for (TreeNode child : node.children) {
dfs(child);
}
}
```
其中 `visit` 方法是对节点的访问操作。
栈实现的代码如下:
```
public void dfs(TreeNode root) {
if (root == null) {
return;
}
Stack<TreeNode> stack = new Stack<>();
stack.push(root);
while (!stack.isEmpty()) {
TreeNode node = stack.pop();
visit(node);
for (int i = node.children.size() - 1; i >= 0; i--) {
stack.push(node.children.get(i));
}
}
}
```
广度优先搜索可以采用队列的方式实现。代码如下:
```
public void bfs(TreeNode root) {
if (root == null) {
return;
}
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);
while (!queue.isEmpty()) {
int size = queue.size();
for (int i = 0; i < size; i++) {
TreeNode node = queue.poll();
visit(node);
for (TreeNode child : node.children) {
queue.offer(child);
}
}
}
}
```
其中 `visit` 方法是对节点的访问操作。
阅读全文