算法设计之二叉树的遍历

本文介绍了二叉树的三种遍历方式:先序、中序和后序遍历。详细讲解了递归和非递归的方法,包括先序遍历先将根节点入栈,中序遍历先遍历左子树再入栈,后序遍历则先处理左右子树。对于非递归实现,利用栈来辅助完成遍历过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近发现面试很喜欢考二叉树的遍历,所以补一个。

树的节点结构:

public class TreeNode {
    public int value;
    public TreeNode left;
    public TreeNode right;
    public TreeNode(int data) {
        this.data = data;
    }
}

一,二叉树的先序遍历

先序遍历顺序为根->左->右:

递归方法:

public void preOrderRecur(TreeNode root) {
    if(root == null) {
        return;
    }
    System.out.println(root.val + " ");
    preOrderRecur(root.left);
    preOrderRecur(root.right);
}

非递归方法:

二叉树遍历所有的方法都可以通过栈结构实现,其中先序遍历是先把根节点押入栈内,然后pop()并记录,然后压入当前节点的右节点和左节点,循环这一过程。

public List<Integer> preorderTraversal(TreeNode root) {
    List<Integer> list = new ArrayList<>();
    Stack<TreeNode> stack = new Stack<>();
    TreeNode cur = root;
    stack.push(cur);
    while(cur != null || !stack.isE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值