二叉树先序遍历java
时间: 2023-12-07 14:38:21 浏览: 31
以下是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实现二叉树先序遍历的代码:
```
public List<Integer> preorderTraversal(TreeNode root) {
List<Integer> res = new ArrayList<>();
if (root == null) {
return res;
}
Stack<TreeNode> stack = new Stack<>();
stack.push(root);
while (!stack.isEmpty()) {
TreeNode node = stack.pop();
res.add(node.val);
if (node.right != null) {
stack.push(node.right);
}
if (node.left != null) {
stack.push(node.left);
}
}
return res;
}
```
这里使用了栈来模拟递归过程,先将根节点入栈,然后每次取出栈顶元素,将其值加入结果列表中,并将其右子节点和左子节点依次入栈。由于栈是后进先出的,所以先将右子节点入栈,再将左子节点入栈,这样在取出栈顶元素时就可以先访问左子树,再访问右子树,从而实现先序遍历。