二叉树先序遍历java
时间: 2023-12-07 12:38:21 浏览: 90
以下是Java中二叉树先序遍历的代码示例:
```java
// 定义二叉树节点类
class TreeNode {
int val;
TreeNode left; TreeNode right;
TreeNode(int x) { val = x;}
// 先序遍历函数
public void preorderTraversal(TreeNode root) {
if (root == null) {
return;
}
System.out.print(root.val + " "); // 输出当前节点的值
preorderTraversal(root.left); // 递归遍历左子树
preorderTraversal(root.right); // 递归遍历右子树
}
```
在上述代码中,我们首先定义了一个二叉树节点类`TreeNode`,包含节点的值`val`以及左右子节点`left`和`right`。然后我们定义了一个先序遍历函数`preorderTraversal`,该函数接受一个二叉树的根节点`root`作为参数。在函数中,我们首先判断当前节点是否为空,如果为空则直接返回;否则,我们先输出当前节点的值,然后递归遍历左子树和右子树。
相关问题
二叉树的先序遍历java
以下是二叉树的先序遍历Java代码:
```java
class Solution {
public List<Integer> preorderTraversal(TreeNode root) {
List<Integer> result = new ArrayList<>();
if (root == null) {
return result;
}
Stack<TreeNode> stack = new Stack<>();
stack.push(root);
while (!stack.isEmpty()) {
TreeNode node = stack.pop();
result.add(node.val);
if (node.right != null) {
stack.push(node.right);
}
if (node.left != null) {
stack.push(node.left);
}
}
return result;
}
}
```
其中,我们使用了一个栈来存储遍历过程中的结点。首先将根节点入栈,然后每次从栈中弹出一个结点,将其值加入结果列表中,并将其右子节点和左子节点依次入栈。由于栈是后进先出的,所以左子节点会先被弹出,从而实现了先序遍历。
java表达输出二叉树先序遍历
在Java中,先序遍历二叉树通常采用递归的方式实现。对于一个节点,首先访问该节点,然后递归地遍历左子树,最后遍历右子树。以下是基于递归的简单示例:
```java
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int val) {
this.val = val;
}
}
public class PreorderTraversal {
// 先序遍历函数
public List<Integer> preorderTraversal(TreeNode root) {
if (root == null) {
return new ArrayList<>();
}
// 记录当前路径结果
List<Integer> result = new ArrayList<>();
result.add(root.val); // 先访问根节点
// 递归遍历左子树和右子树
result.addAll(preorderTraversal(root.left));
result.addAll(preorderTraversal(root.right));
return result;
}
}
```
在这个例子中,`TreeNode`代表二叉树的结点,`preorderTraversal`是一个静态方法,它接收一个根节点作为输入,并返回一个包含先序遍历结果的整数列表。
阅读全文