java二叉树前序遍历递归和非递归实现

下面给大家分享的是java二叉树前序遍历的递归以及非递归实现的例子,想了解的人一起来看看下面的实例吧。

1、前序遍历

了解一下访问顺序:

访问顺序

首先是根节点,之后是左子树,最后是右子树;

上面示图的访问结果为GDAFEMHZ;

(1)递归实现

来看一下递归实现代码:

public void preOrderTraverse1(TreeNode root)
{
    if (root != null)
    {
        System.out.print(root.val + "->");
        preOrderTraverse1(root.left);
        preOrderTraverse1(root.right);
    }
}

(2)非递归实现

来看一下非递归实现代码:

public void preOrderTraverse2(TreeNode root)
{
    Stack < TreeNode > stack = new Stack < > ();
    TreeNode node = root;
    while (node != null || !stack.empty())
    {
        if (node != null)
        {
            System.out.print(node.val + "->");
            stack.push(node);
            node = node.left;
        }
        else
        {
            TreeNode tem = stack.pop();
            node = tem.right;
        }
    }
}

以上的实现你都了解了吗?你还想了解更多和java二叉树有关的实现实例吗?可以继续关注奇Q工具网,里面有更多的java程序代码例子可以给你分享哦。

推荐阅读:

java二叉树深度不用递归,非递归实现

java二叉树中所有距离为K的结点详解

java二叉树和为某一个值的路径如何实现?思路分享