二叉树的前序遍历

这篇博客介绍了如何进行二叉树的前序遍历,强调了递归和非递归算法的实现。通过一个示例展示了前序遍历的顺序,并详细解释了非递归算法的思路,即利用栈来保存待访问的节点。在非递归算法中,首先将根节点入列表,然后将右子节点入栈,依次访问左子节点和栈顶节点,直到所有节点都被访问。此外,该文还提及了在Java中使用泛型和栈的知识。
摘要由CSDN通过智能技术生成

给定一个二叉树,返回它的 前序 遍历。

示例:

输入: [1,null,2,3]  
   1
    \
     2
    /
   3 

输出: [1,2,3]

进阶: 递归算法很简单,你可以通过迭代算法完成吗?

通过此题掌握二叉树的前序遍历,掌握Java泛型和栈的使用

题目分析:

二叉树的前序遍历,用递归遍历很容易实现,但如果用迭代算法就有一定的难度;

二叉树的前序遍历,顺序是——“根左右”(根节点,左子树,右子树),对于遍历,我们从根结点开始,访问到根结点入列表,接下来我们希望一直访问到的是左子树,右子树一定是最后访问到的,那当我们访问到右子树的时候我们此时并不需要将它入列表,那么就先将它入栈,等到需要它入列表的时候再取出来;

代码实现:

非递归:

public static class TreeNode
{
     
   int data;
   TreeNode left;
   TreeNode right;

   TreeNode(int val)
   {
     
       data = val;
   }
}

/**
* 非递归
*/
public List<Integer> preorderTraversal(TreeNode root)
{
     
   List<Integer
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值