用java 编写求一棵二叉树先序遍历的算法程序
时间: 2024-03-11 20:47:11 浏览: 67
以下是用 Java 编写求一棵二叉树先序遍历的算法程序(同样使用递归实现):
```java
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
class Solution {
public List<Integer> preorderTraversal(TreeNode root) {
List<Integer> res = new ArrayList<>();
if (root == null) {
return res;
}
res.add(root.val);
res.addAll(preorderTraversal(root.left));
res.addAll(preorderTraversal(root.right));
return res;
}
}
```
其中,`TreeNode` 是二叉树的节点类,包含值 `val`、左子树 `left`、右子树 `right`。`preorderTraversal` 函数接受根节点 `root`,返回一个列表,表示先序遍历结果。具体实现思路与 Python 版本相同:先访问根节点,再递归访问左子树和右子树。如果根节点为 `null`,直接返回空列表。
相关问题
使用java语言编写程序实现树的先序遍历和中序遍历
在 Java 中,树的先序遍历(Preorder Traversal)和中序遍历(Inorder Traversal)是常见的数据结构操作,通常用于访问二叉树的节点。以下是使用递归的方式实现这两个遍历算法:
**先序遍历 (Preorder):**
```java
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
// 添加其他构造方法...
}
public void preorderTraversal(TreeNode root) {
if (root != null) {
System.out.print(root.val + " "); // 访问根节点
preorderTraversal(root.left); // 遍历左子树
preorderTraversal(root.right); // 遍历右子树
}
}
```
**中序遍历 (Inorder):**
```java
public void inorderTraversal(TreeNode root) {
if (root != null) {
inorderTraversal(root.left); // 遍历左子树
System.out.print(root.val + " "); // 访问根节点
inorderTraversal(root.right); // 遍历右子树
}
}
```
在上述代码中,`TreeNode` 类表示二叉树的节点,包含值 `val` 和左右子节点。`preorderTraversal` 和 `inorderTraversal` 分别是先序和中序遍历的函数,它们接受树的根节点作为参数。
阅读全文