栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

二叉树先序遍历(递归+迭代)——java

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

二叉树先序遍历(递归+迭代)——java

目录

一、题目

二、先序遍历讲解

三、先序遍历递归法实现(详解+代码)

1、递归实现讲解:

 2、代码实现:

四、先序遍历迭代法实现(详解+代码)

1、迭代法实现讲解

2、具体代码实现 


一、题目

leetcode链接:二叉树的前序遍历 - 力扣 (LeetCode)

内容:

给你二叉树的根节点 root ,返回它节点值的 前序 遍历。

示例 1:

输入:root = [1,null,2,3]
输出:[1,2,3]

二、先序遍历讲解

(1)下图先序遍历结果:

        图1-1:1--2--5--3--7

        图1-2:1--2--5--6--3--7

(2)遍历顺序:中左右

                                  图1-1   

                              图1-2                          

三、先序遍历递归法实现(详解+代码)

1、递归实现讲解:

(1)确定递归放回值以及参数:根据题目需要返回遍历的节点,所以需要List集合存储节点的值,同时需要将二叉树头节点传入;

preorder(TreeeNode root,List result)

(2)确定递归终止条件:遍历二叉树节点为空,表明已经无节点,直接return

if(node==null)
    return;

(3)确定递归逻辑:递归顺序为中,左,右,递归开始时,先将根节点添加List集合,然后遍历左子树,最后遍历右子树。

result.add(treeNode.val);//中
preorder(treeNode.left,result); //左
preorder(treeNode.right,result); //右

 2、代码实现:
Class test{
     public static void preorder(TreeNode treeNode, List result){
        if (treeNode==null){
            return;
        }
        result.add(treeNode.val);//中
        preorder(treeNode.left,result); //左
        preorder(treeNode.right,result); //右
    }

    public List preorderTraversal(TreeNode root) {
        List result=new ArrayList<>();
        preorder(root,result);
        return result;
    }
}

四、先序遍历迭代法实现(详解+代码)

1、迭代法实现讲解

(1)迭代法可以借助栈来进行遍历,栈的结构是后进先出,先进后出;

(2)迭代遍历流程如下:

  ①首先将头节点压入栈,以栈是否为空作为循环条件;

  ② 栈不为空,弹出栈顶元素添加到集合list,判断右子树是否为空,不为空入栈,判断左子树是否为空,不为空入栈;

2、具体代码实现 
    public List preorderTraversal(TreeNode root) {
        List list=new ArrayList<>();
        if(root==null)
            return list;
        
        Stack stack=new Stack<>();
        stack.push(root);

        while (!stack.isEmpty()){
            TreeNode node=stack.pop();
            list.add(node.val);
            if (node.right!=null)
                stack.push(node.right);
            if (node.left!=null)
                stack.push(node.left);
        }
        return list;
    }

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/883975.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号