Java二叉树的四种遍历方式详解

Java二叉树的四种遍历方式详解

前序遍历(Preorder Traversal)

前序遍历是一种根-左-右的遍历顺序,即先访问根节点,然后访问左子树,最后访问右子树,在Java中,可以通过递归或栈实现前序遍历。

Java二叉树的四种遍历方式详解

递归实现:

class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;
    TreeNode(int x) { val = x; }
}
public void preorderTraversal(TreeNode root) {
    if (root != null) {
        System.out.print(root.val + " ");
        preorderTraversal(root.left);
        preorderTraversal(root.right);
    }
}

栈实现:

Java二叉树的四种遍历方式详解

import java.util.Stack;
class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;
    TreeNode(int x) { val = x; }
}
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);
        }
    }
}

中序遍历(Inorder Traversal)

中序遍历是一种左-右-根的遍历顺序,即先访问左子树,然后访问根节点,最后访问右子树,在Java中,同样可以通过递归或栈实现中序遍历。

递归实现:

Java二叉树的四种遍历方式详解

class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;
    TreeNode(int x) { val = x; }
}
public void inorderTraversal(TreeNode root) {
    if (root != null) {
        inorderTraversal(root.left);
        System.out.print(root.val + " ");
        inorderTraversal(root.right);
    }
}

栈实现:

import java.util.Stack;
class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;
    TreeNode(int x) { val = x; }
}
public void inorderTraversal(TreeNode root) {
    if (root == null) {
        return;
    }
    Stack<TreeNode> stack = new Stack<>();
    TreeNode cur = root;
    while (cur != null || !stack.isEmpty()) {
        while (cur != null) {
            stack.push(cur);
            cur = cur.left;
        }
        cur = stack.pop();
        System.out.print(cur.val + " ");
        cur = cur.right;
    }
}

原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/124906.html

(0)
K-seoK-seoSEO优化员
上一篇 2023年12月15日 02:00
下一篇 2023年12月15日 02:00

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

免备案 高防CDN 无视CC/DDOS攻击 限时秒杀,10元即可体验  (专业解决各类攻击)>>点击进入