java 二叉树 前序遍历
时间: 2023-11-14 18:07:13 浏览: 55
二叉树的前序遍历是指先访问根节点,然后访问左子树,最后访问右子树。Java代码实现如下:
```java
public void preOrder(TreeNode root) {
if (root == null) {
return;
}
System.out.print(root.val + " ");
preOrder(root.left);
preOrder(root.right);
}
```
其中,TreeNode是二叉树节点的定义,包含val、left、right三个属性。
相关问题
二叉树 前序遍历 java
二叉树的前序遍历是一种树遍历算法,它按照根节点、左子树、右子树的顺序遍历二叉树的所有节点。下面是用Java语言实现二叉树前序遍历的代码示例:
```java
class TreeNode {
int val;
TreeNode left;
TreeNode right;
public TreeNode(int val) {
this.val = val;
}
}
public class BinaryTree {
// 前序遍历
public static void preorderTraversal(TreeNode root) {
if (root == null) {
return;
}
System.out.print(root.val + " "); // 先输出当前节点的值
preorderTraversal(root.left); // 递归遍历左子树
preorderTraversal(root.right); // 递归遍历右子树
}
public static void main(String[] args) {
// 构造二叉树
TreeNode root = new TreeNode(1);
root.left = new TreeNode(2);
root.right = new TreeNode(3);
root.left.left = new TreeNode(4);
root.left.right = new TreeNode(5);
System.out.println("前序遍历结果:");
preorderTraversal(root);
}
}
```
以上代码通过构造一个简单的二叉树,并调用前序遍历方法进行遍历,输出结果为:1 2 4 5 3。
二叉树前序遍历java
以下是Java实现二叉树前序遍历的两种方法:
1. 递归方法:
```java
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int val) {
this.val = val;
}
}
public class BinaryTree {
public void preorderTraversal(TreeNode root) {
if (root == null) {
return;
}
System.out.print(root.val + " "); // 先访问根节点
preorderTraversal(root.left); // 再访问左子树
preorderTraversal(root.right); // 最后访问右子树
}
}
// 创建二叉树
TreeNode root = new TreeNode(1);
root.left = new TreeNode(2);
root.right = new TreeNode(3);
root.left.left = new TreeNode(4);
root.left.right = new TreeNode(5);
// 调用前序遍历方法
BinaryTree binaryTree = new BinaryTree();
binaryTree.preorderTraversal(root); // 输出:1 2 4 5 3
```
2. 栈方法:
```java
import java.util.Stack;
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int val) {
this.val = val;
}
}
public class BinaryTree {
public void preorderTraversal(TreeNode root) {
if (root == null) {
return;
}
Stack<TreeNode> stack = new Stack<>();
stack.push(root);
while (!stack.isEmpty()) {
TreeNode node = stack.pop();
System.out.print(node.val + " "); // 先访问根节点
if (node.right != null) {
stack.push(node.right); // 右子树入栈
}
if (node.left != null) {
stack.push(node.left); // 左子树入栈
}
}
}
}
// 创建二叉树
TreeNode root = new TreeNode(1);
root.left = new TreeNode(2);
root.right = new TreeNode(3);
root.left.left = new TreeNode(4);
root.left.right = new TreeNode(5);
// 调用前序遍历方法
BinaryTree binaryTree = new BinaryTree();
binaryTree.preorderTraversal(root); // 输出:1 2 4 5 3
```