首页 > 其他分享 >实现二叉树的前序遍历

实现二叉树的前序遍历

时间:2024-08-14 13:30:58浏览次数:12  
标签:遍历 TreeNode val 前序 right 二叉树 new root left

序遍历的顺序是:先访问根节点,再访问左子树,最后访问右子树

递归和迭代

class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;

    TreeNode(int val) {
        this.val = val;
        this.left = null;
        this.right = null;
    }
}

public class PreorderTraversal {

    // 递归实现前序遍历
    public static void preorderTraversal(TreeNode root) {
        if (root == null) {
            return;
        }
        
        // 访问根节点
        System.out.print(root.val + " ");
        
        // 递归访问左子树
        preorderTraversal(root.left);
        
        // 递归访问右子树
        preorderTraversal(root.right);
    }

    public static void main(String[] args) {
        // 创建一个简单的二叉树
        //        1
        //       / \
        //      2   3
        //     / \
        //    4   5
        TreeNode root = new TreeNode(1);
        root.left = new TreeNode(2);
        root.right = new TreeNode(3);
        root.left.left = new TreeNode(4);
        root.left.right = new TreeNode(5);

        System.out.println("前序遍历结果:");
        preorderTraversal(root);
    }
}

迭代

class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;

    TreeNode(int val) {
        this.val = val;
        this.left = null;
        this.right = null;
    }
}

public class PreorderTraversal {

    // 递归实现前序遍历
    public static void preorderTraversal(TreeNode root) {
        if (root == null) {
            return;
        }
        
        // 访问根节点
        System.out.print(root.val + " ");
        
        // 递归访问左子树
        preorderTraversal(root.left);
        
        // 递归访问右子树
        preorderTraversal(root.right);
    }

    public static void main(String[] args) {
        // 创建一个简单的二叉树
        //        1
        //       / \
        //      2   3
        //     / \
        //    4   5
        TreeNode root = new TreeNode(1);
        root.left = new TreeNode(2);
        root.right = new TreeNode(3);
        root.left.left = new TreeNode(4);
        root.left.right = new TreeNode(5);

        System.out.println("前序遍历结果:");
        preorderTraversal(root);
    }
}

 

 

 

 

 

   

标签:遍历,TreeNode,val,前序,right,二叉树,new,root,left
From: https://www.cnblogs.com/Jomini/p/18358759

相关文章

  • 实现二叉树的中序遍历
    中序遍历的顺序是:先访问左子树,再访问根节点,最后访问右子树。 classTreeNode{intval;TreeNodeleft;TreeNoderight;TreeNode(intval){this.val=val;this.left=null;this.right=null;}}publicclassInorde......
  • 日撸Java三百行(day22:二叉树的存储)
    目录前言一、压缩存储二、层次遍历三、代码实现1.顺序表创建及初始化2.方法创建3.数据测试4.完整的程序代码总结前言关于二叉树的存储,昨天我们提到有顺序存储和链式存储这两种方式,不过非完全二叉树顺序存储的话会造成很大的空间浪费,所以我们昨天使用的是链式存储......
  • Map概述、构造方法、遍历
    packagecom.shujia.day15;importjava.util.HashMap;importjava.util.Map;/*Map:存储元素的特点是每一个元素是一个键值对{【name:"魏一民"】,【age:18】}Map集合的共同拥有的特点:1、Map集合中的元素,键是唯一的,不会在一个Map集合发现两个相同的键......
  • 代码随想录算法训练营第十四天(一)| 226.翻转二叉树 101. 对称二叉树
    226.翻转二叉树题目:给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。示例1:输入:root=[4,2,7,1,3,6,9]输出:[4,7,2,9,6,3,1]示例2:输入:root=[2,1,3]输出:[2,3,1]示例3:输入:root=[]输出:[]提示:树中节点数目范围在 [0,100] 内-100<=......
  • 25版王道数据结构课后习题详细分析 第五章 树与二叉树 5.1 树的基本概念
     一、单项选择题————————————————————————————————————————解析:树是一种分层结构,它特别适合组织那些具有分支层次关系的数据。正确答案:D————————————————————————————————————————解......
  • 代码随想录算法训练营第十三天|二叉树理论基础,144.二叉树的前序遍历,145.二叉树的中序
    day12周日放假二叉树理论基础:文章链接:代码随想录文章摘要:满二叉树定义:如果一棵二叉树只有度为0的结点和度为2的结点,并且度为0的结点在同一层上,则这棵二叉树为满二叉树。完全二叉树定义:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一......
  • delphi里的 low to high遍历
    在Delphi中,Low和High是两个非常有用的函数,它们分别用于获取枚举类型、数组、字符串或其他有序类型的最小值和最大值。当你想要遍历这些类型的所有可能值时,Low和High函数就显得特别有用。以下是关于如何使用Low和High函数进行遍历的详细说明:遍历枚举对于枚举类型,Low......
  • 数据结构:链式二叉树(1)
    目录前言一、链式二叉树的遍历1.1前序遍历1.2中序遍历 1.3后序遍历二、层序遍历前言  通过前面关于二叉树的基础知识我们知道链式二叉树分为二叉链和三叉链,本篇主要讲的是二叉链的实现,在此之前,为了方便实现链式二叉树的各个功能,我们需要先手动快速创建一个链......
  • 数据结构----二叉树
              小编会一直更新数据结构相关方面的知识,使用的语言是Java,但是其中的逻辑和思路并不影响,如果感兴趣可以关注合集。    希望大家看完之后可以自己去手敲实现一遍,同时在最后我也列出一些基本和经典的题目,可以尝试做一下。大家也可以自己去力扣或者......
  • 数据结构:顺序二叉树(堆)
    目录前言一、堆的实现 1.1头文件1.2堆的初始化及销毁1.3 堆的插入1.4堆的删除1.5取堆顶数据和判空前言   前面我们讲了二叉树有顺序结构和链式结构,今天就来讲一下顺序结构  普通的二叉树是不适合用数组来存储的,因为可能会存在大量的空间浪费。而......