在Java中实现二叉树的遍历函数方法
发布时间:2023-06-19 15:47:34
在Java中,二叉树的遍历函数方法有三种:前序遍历、中序遍历和后序遍历。这里先给出二叉树的定义:
class TreeNode {
int val; // 节点的值
TreeNode left; // 左子节点
TreeNode right; // 右子节点
public TreeNode(int val) {
this.val = val;
}
}
前序遍历函数方法:
前序遍历按照根节点、左子树、右子树的顺序进行遍历。
public void preOrder(TreeNode node) {
if (node != null) {
System.out.println(node.val); // 输出根节点
preOrder(node.left); // 遍历左子树
preOrder(node.right); // 遍历右子树
}
}
中序遍历函数方法:
中序遍历按照左子树、根节点、右子树的顺序进行遍历。
public void inOrder(TreeNode node) {
if (node != null) {
inOrder(node.left); // 遍历左子树
System.out.println(node.val); // 输出根节点
inOrder(node.right); // 遍历右子树
}
}
后序遍历函数方法:
后序遍历按照左子树、右子树、根节点的顺序进行遍历。
public void postOrder(TreeNode node) {
if (node != null) {
postOrder(node.left); // 遍历左子树
postOrder(node.right); // 遍历右子树
System.out.println(node.val); // 输出根节点
}
}
以上三种遍历函数方法都是递归实现的,每次调用函数时都会先遍历左、右子树,直到节点为空才停止。可以使用栈来将递归改为迭代实现。也可以使用Morris遍历方法来实现二叉树的中序遍历,可以实现O(1)空间复杂度的中序遍历。
