二叉树的遍历--深度优先遍历

二叉树深度优先遍历解题思路 对二叉树的深度遍历的理解和所延伸出的解题思路的分享,作者能力有限,有任何问题请多多指正。 阅读详情

深度优先遍历包括:前中后序遍历

比较容易实现的是利用递归迭代进行遍历操作

前序遍历

public static void preOrderTree(Node root){
       if(root==null){
           return;
       }
        System.out.print(" "+root.val);
       preOrderTree(root.left);
       preOrderTree(root.right);
       //时间复杂度为O(n)

中序遍历

    public static void inOrderTree(Node root){
        if(root==null){
            return;
        }
        inOrderTree(root.left);
        System.out.print(" "+root.val);
        inOrderTree(root.right);

    }

后序遍历

 public static void postOrderTree(Node root){
        if(root==null){
            return;
        }
        postOrderTree(root.left);
        postOrderTree(root.right);
        System.out.print(" "+root.val);
      }

关于二叉树的深度优先遍历的一些常见应用

//计算二叉树中节点的个数 
     public static int calcTreeNode(Node root){
         if(root==null){
           return 0;
       }
          count++;
          calcTreeNode(root.left);
          calcTreeNode(root.right);
          return count;
       }
      public static int calcTreeNode_1(Node root){
          if(root==null){ 
              return 0;
          }
          int left=calcTreeNode_1(root.left);
          int right=calcTreeNode_1(root.right);
          return left+right;
      }
//求二叉树的叶子结点个数
      public static void cacLeafNode(Node root){
          if(root==null){
              return;
          }
          //代表结点 用来判断是否为叶子节点
          if(root.left==null && root.right==null){
              count++;
          }
          cacLeafNode(root.left);
          cacLeafNode(root.right);
    }
//求二叉树的高度
       public static int calcHigh(Node root){
          if(root==null){
              return 0;
          }
          int left=calcHigh(root.left);
          int right=calcHigh(root.right);
          int height=Math.max(left,right);
          return height+1;
}
//计算第k层的结点个数
       public static int calcKlevel(Node root,int k){
          if(root==null){
              return 0;
          }
          if(k==1){
              return 1;
          }
          int left=calcKlevel(root.left,k-1);
          int right=calcKlevel(root.right,k-1);
          int count=left+right;
          return count;
}

 

二叉树的深度优先遍历 二叉树的深度优先遍历和先序遍历结果一样的。 思想是采用栈, 阅读详情

相关推荐

XGBoost实战:从原理到调参,手把手教你提升模型性能(附Python代码)

本文深入解析XGBoost核心原理,并提供一套从数据准备、系统性调参到生产部署的完整实战指南。通过剖析目标函数、正则化项与分裂算法,帮助读者理解参数背后的数学逻辑,并利用交叉验证、早停法及自动化工具(如Optuna)高效提升模型性能。文中附有详尽的Python代码示例,涵盖类别特征处理、缺失值应对、不平衡数据调整及模型可视化等高级技巧。

weixin_29178069的博客 457

二叉树树的算法题目

一、二叉树中用递归实现的各种题目总结 1.将一棵二叉树转化成双向链表     二叉树转化成双向链表的过程,就是中序遍历的过程。问题的关键是如何将在遍历二叉树的同时,修改指针指向,满足双向要求。   public TreeNode Convert(TreeNode root) { if(root==null)return null; if(root.left==

maoloveyu_ecstc的博客 561

华为云Stack扩容实战:从CMDB配置到计算节点增减容,一份避坑指南

本文详细解析华为云Stack扩容实战,从CMDB配置到计算节点增减容的全流程操作指南。通过典型场景案例和避坑建议,帮助企业高效管理计算资源扩容与减容,确保业务连续性。特别针对华为云Stack的弹性扩容能力提供专业指导,涵盖存储、网络及自动化工具链的配合使用。

weixin_30591551的博客 479

二叉树遍历之深度优先遍历

哈哈哈,小吉我又回归了!!!(欢迎欢迎),书接上回,这篇blog是讲二叉树遍历之深度优先遍历。在用代码实现深度优先遍历之前,我们先来了解了解什么是深度优先遍历(上波概念~)。

henjdx的博客 1403

YOLOv12 改进 | Backbone改进 3

将CSP中的简单拼接改为可学习的特征选择门控,动态决定哪些特征流向下一层,同样再写这篇。:相比静态CSP的固定50/50分割,门控机制可学习0.3:0.7等最优比例。在输入端加入轻量SR模块,对下采样后的特征进行超分恢复,提升小目标检测能力。(小目标): 从 0.51 AP → 0.63 AP (+24%):采用ESPCN的高效亚像素卷积,避免传统插值的信息损失。:从通道级(SE)到空间级(Spatial)的多粒度控制。:结合浅层细节和深层语义,恢复小目标的纹理信息。

u012133341的博客 841

1、开启 Microsoft Power Automate 自动化之旅

本文介绍了 Microsoft Power Automate 的基本概念和其在信息时代自动化需求中的重要作用。Power Automate 是 Power Platform 的一部分,能够通过无代码/低代码的方式自动化处理重复性任务,例如邮件处理、文件复制等,从而提升工作效率。文章还详细讲解了 Power Automate 的核心术语、登录方式、创建第一个流程的操作步骤,并通过示例帮助用户快速上手。无论是终端用户还是管理员,都可以通过本文了解如何利用 Power Automate 实现业务流程自动化。

corn8的博客 169

二叉树(深度优先遍历)

本文系统介绍了二叉树的基本概念和遍历方法。首先阐述了递归算法转化为非递归算法的基本原理,强调栈在转换过程中的关键作用。随后详细定义了树和二叉树的基本术语及性质,包括结点度、层次、深度等概念。重点讲解了三种深度优先遍历方式(前序、中序、后序)的递归实现和非递归实现方案,其中后序遍历的非递归实现提供了标记法和双栈法两种解决方案。

nian_r的博客 1457

军品研制过程-转阶段

介绍军品转阶段评审

Abel的博客 2万+

二叉树之使用栈实现深度优先遍历

数据结构之使用栈实现深度优先遍历 简介  在读书的时候,在看到需要使用递归来处理树或者图的时候,自己的理解力就不够了,总是无法透澈的理解。三年的程序员生活让自己对于编码熟悉了很多,通过在工作中简单的使用了递归来解决一些问题之后,递归渐渐的有了理解,但通过栈来代替递归的使用还是无法理解的很到位,这次也是借着漫画算法这本书,总结一下,希望能加深理解。  昨天刘张宋畅游西湖,天气晴朗,把西湖搬进心理,还在植物园看到了洗心的字眼,昨天的经历大抵也是在洗心吧。  不多说其他的事情了,树这种数据结构非常的重要,但也是一

不当初 6271

R语言dplyr包recode函数、recode_factor函数数值或因子替换实战

R语言dplyr包recode函数、recode_factor函数数值或因子替换实战 目录 R语言dplyr包recode函数、recode_factor函数数值或因子替换实战 #导入dplyr包 #recode函数进行数值替换 #recode_factor函数对因子变量进行替换 #导入dplyr包 install.packages("dplyr") # Install & load dplyr library("dpl.

data+scenario+science+insight 1590

FT2004(D2000)开发实战之AMD R5 230显卡驱动适配

AMD R5 230显卡驱动适配

嵌入式Linux 3199

二叉树深度优先遍历-递归实现

二叉树深度优先遍历的递归实现一、深度优先遍历二、先序遍历1.算法思路2.代码实现三、中序遍历1.算法思路2.代码实现四、后序遍历1.算法思路2.代码实现 一、深度优先遍历 对每一个可能的分支路径深入到不能再深入为止,而且每个结点只能访问一次。 要特别注意的是,二叉树的深度优先遍历比较特殊,可以细分为先序遍历、中序遍历、后序遍历。具体说明如下: 先序遍历:对任一子树,先访问根,然后遍历其左子树,最后遍历其右子树。即:根、左、右 中序遍历:对任一子树,先遍历其左子树,然后访问根,最后遍历其右子树。即:左、根、右

个人博客 2965

手把手教你学Simulink--基于高频与高速信号处理的滤波器场景实例:毫米波雷达中匹配滤波器的多目标分辨仿真

在自动驾驶、智能交通和工业感知等领域,毫米波雷达(mmWave Radar)因其高分辨率全天候工作和抗电磁干扰能力,成为关键的感知传感器。其核心信号处理算法之一是匹配滤波器(Matched Filter),用于在强噪声背景下最大化信噪比(SNR),实现对微弱目标的检测。在调频连续波(FMCW, Frequency-Modulated Continuous Wave)雷达中,发射信号为线性调频(Chirp)信号。当信号遇到多个目标时,回波是多个延迟版本的叠加。

MHD0815的博客 134

二叉树深度优先遍历

二叉树深度遍历的深度优先就是偏向于纵向,“一头扎到底”的访问方式。深度优先遍历主要分为前序遍历、中序遍历、后序遍历。 举例 遍历如下二叉树: 1、前序遍历输出顺序是:先输出父节点,再遍历左子树和右子树。 /** * 树的节点 */ class TreeNode{ public int rank;//排名 public String name;//姓名 public TreeNode left;//左节点 public TreeNode right; /**

Rong_zhe的博客 1719

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

二叉树的深度优先遍历和广度优先遍历

1. 分析 二叉树的深度优先遍历的非递归的通用做法是采用栈,广度优先遍历的非递归的通用做法是采用队列。 深度优先遍历:对每一个可能的分支路径深入到不能再深入为止,而且每个结点只能访问一次。要特别注意的是,二叉树的深度优先遍历比较特殊,可以细分为先序遍历、中序遍历、后序遍历。具体说明如下: 先序遍历:对任一子树,先访问根,然后遍历其左子树,最后遍历其右子树。 中序遍历:对任一子树,先遍历其左...

Fantasy 1万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

二叉树深度优先遍历的非递归实现

最近写算法题的过程中,忽然对基础的深度优先遍历记忆模糊。想到可能对于新手来说,对基础的二叉树深度优先遍历非递归版本实现理解不是很深刻,所以写下这篇博客。非递归实现二叉树的三种遍历方式还是挺重要的,在面试上也是常考题。一定要做到熟练掌握,“张口就来”。我是笙一,一个努力拼搏的人,一起进步,加油!

lofish_1的博客 1864

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

二叉树的深度优先遍历就是二叉树前序遍历吗?

二叉树的深度优先遍历就是二叉树前序遍历吗? 更多0分享到: 相关主题推荐: 二叉树 遍历 相关帖子推荐:http://bbs.youkuaiyun.com/topics/190147521 链表输出为倒置的 求助二叉树层次遍历 怎么用非递归算法创建二叉树 C#先序创建二叉树出错,求助 鸡生蛋还是蛋生鸡 析构函数 无法解析的外部符号 遍历list C# 遍历sq

mmbbz的专栏 4270

二叉树遍历的深度优先遍历

二叉树的深度优先遍历 力扣[144]二叉树的前序遍历 题目 给定一个二叉树,返回它的 前序 遍历。示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3] 解法一:递归 class Solution { public List<Integer> preorderTraversal(TreeNode root) { List<Integer> list = new ArrayList&l

六甲的博客 397

python实现二叉树的广度优先遍历和深度优先遍历

定义 二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。 性质 性质1: 在二叉树的第i层上至多有2^(i-1)个节点(i&gt;0)性质2: 深度为k的二叉树至多有2^k - 1个节点(k&gt;0)性质3: 对于任意一棵二叉树,如果其叶节点数为N0,而度数为2的节点总数为N2,则N0=N2+1;性质4:...

zzfightingy的博客 8339

二叉树的广度优先遍历和深度优先遍历

一、二叉树介绍 二叉树,顾名思义,就是一种树结构。树的每个结点最多有两个子节点,通常称为左节点和右节点,下图为示例二叉树。 二、深度优先遍历 深度优先遍历(Depth First Search),简称 DFS,其原则是,沿着一条路径一直找到最深的那个节点,当没有子节点的时候,返回上一级节点,寻找其另外的子节点,继续向下遍历,没有就向上返回一级,直到所有的节点都被遍历到,每个节点只能访问一次。 上...

a1786742005的博客 2069

Java实现二叉树的深度优先遍历

基本思路: 二叉树的深度优先遍历(中序遍历)需要一个栈用于遍历,一个列表用于记录访问过的节点 1.将根节点压入栈中 2.1栈顶元素有左子节点且其左子节点不在列表当中,将其左子节点压入栈中 2.2.1如果栈顶元素没有左子节点或其左子节点在列表中,弹出栈顶元素并访问(还要将其加入到列表中)。 2.2.2如果弹出的节点有右子节点,将其右子节点压入栈 3.如果栈不为空,执行2 如上图所示,则采用当前...

Beyond94的博客 429
上一篇: 判断二叉树是否为平衡二叉树
下一篇: 二叉树的遍历--广度优先遍历
#spring bear#
博客等级 码龄8年 20粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值