给定一棵二叉树,找出它的最小深度。最小深度是沿着从根节点到最近叶节点的最短路径的节点数目。

思路一:递归。

  • 当节点左右子树都为null时,返回0
  • 当左子树为null,返回右子树递归+1;
  • 当右字数为null,返回左子树递归+1;
  • 当左右子树都不为空,返回左右子树递归最小值。
public class Solution {public int run(TreeNode root) {//当节点左右子树都为null时,返回0if(root==null)return 0;//当左子树为null,返回右子树递归+1;if(root.left==null)return run(root.right)+1;//当右字数为null,返回左子树递归+1;if(root.right==null)return run(root.left)+1;//当左右子树都不为空,返回左右子树递归最小值。int right=run(root.right)+1;int left=run(root.left)+1;return left>right?right:left;}
}

思路二:非递归层次遍历

  • 用一个队列存数据
  • 遍历每层节点,可用循环,遍历完后深度加1.
  • 当存在左右子树都为null时,返回depth
import java.util.*;
public class Solution {public int run(TreeNode root) {Queue<TreeNode> queue=new LinkedList<>();if(root==null)return 0;queue.add(root);int depth=1;while(!queue.isEmpty()){int len=queue.size();//遍历每层while(len>0){TreeNode tree=queue.poll();if(tree.left==null && tree.right==null)return depth;if(tree.left!=null)queue.add(tree.left);if(tree.right!=null)queue.add(tree.right);len--;}depth++;}return depth;}
}

二叉树根结点到叶节点的最短距离相关推荐

  1. 叶子结点和分支节点_数据结构中,满二叉树,结点,叶子节点,是什么?

    除最后一层无任何子节点外,每一层上的所有结点都有两个子结点二叉树. 国内教程定义:一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树.也就是说,如果一个二叉树的层数为K,且结点总数 ...

  2. java计算二叉树的节点最小值_java计算二叉树的高度以及叶节点个数

    java实现二叉树的相关操作 代码如下 package 二叉树有关; import java.util.ArrayDeque; import java.util.Queue; public class ...

  3. 二叉树叶子结点,非叶子节点以及深度的计算

    二叉树叶子结点的计算 //统计叶子结点的数目 int LeafNum(BiTree T) {if (!T) {return 0;} else if (!T->lchild && ...

  4. 求一棵二叉树根到所有叶子节点的路径

    //求路径的函数 void LeavesPath(BitTree* tree, int level) {if (tree == NULL)return;Paths[level] = tree;//这句 ...

  5. 求二叉树上结点的路径c语言版,求二叉树根到给定节点的路径设计报告.doc

    求二叉树根到给定节点的路径设计报告 题目: 求二叉树根到给定节点的路径 摘要:本程序设计题要求出二叉树的根节点到给定节点的路径,我们利用二叉树的双亲存储表示法建立二叉树,然后在树的叶子节点中找到给定的 ...

  6. [c++]查找二叉树根节点到任意结点的路径

    今天在做leetcode236时受到启发,怎么求二叉树根节点到二叉树任意结点(该节点在二叉树中存在)的路径?当然,前提是二叉树各节点的值不相等. 示例 输入:root = [3,5,1,6,2,0,8 ...

  7. LeetCode 742. 二叉树最近的叶节点(建立父节点信息+BFS)

    文章目录 1. 题目 2. 解题 1. 题目 给定一个 每个结点的值互不相同 的二叉树,和一个目标值 k,找出树中与目标值 k 最近的叶结点. 这里,与叶结点 最近 表示在二叉树中到达该叶节点需要行进 ...

  8. 数据结构作业之输出树的每一条从根节点到叶节点的路径

    数据结构作业,输出树的每一条从根节点到叶节点的路径 #include <stdio.h> #include <stdlib.h> typedef struct tree {ch ...

  9. 叶子结点和分支节点_统计二叉树分支及叶子结点的个数

    以二叉链表存储结构存储二叉树,统计分支结点及叶子个数. (1)从键盘输入扩展的先序结点数据,以二叉链表存储该二叉树. (2)统计叶子结点个数. (3)统计分支节点个数. (4)要求程序通过一个主菜单进 ...

最新文章

  1. 怎么自学python编程-零基础如何自学编程?
  2. 4.android.mk编写规范
  3. 面向对象程序设计第二次作业(2)
  4. 40+张最全Linux/C/C++思维导图,收藏!
  5. 看完这个你还不理解右值引用和移动构造 你就可以来咬我(上)
  6. python中下拉菜单大小_请问各位大神如何将下拉菜单的文字设定成一个值?
  7. laravel database.php,php Laravel框架学习(一) 之 建立数据库并填充测试数据
  8. URL编码的原因及场景
  9. 获取Winform窗体或Panel下包含的所有控件、根据控件名称获取指定控件
  10. [HNOI2004]宠物收养所
  11. 14WPF---关键帧动画
  12. Python:次方计算
  13. 线性代数(七) : 子空间的基与维数
  14. 年薪3亿的微信之父,在任何事情上都追求极致,怎么做到的?
  15. 七月学习之E6、ES7、ES8、ES9、ES10、ES11新特性
  16. Altium Designer——PCB绘制
  17. DEV-CPP的安装和使用
  18. 智慧停车(十五) 创业初期谈管理
  19. Tesseract OCR 下载及安装教程 (中英文语言包)
  20. 美国计算机最新招聘,【访问学者招聘】美国博世研究与技术中心招聘计算机科学与统计学方向博士后和访问学者...

热门文章

  1. 英语情景对话计算机的优缺点,英语口语考试情景对话互联网的利与弊
  2. linux分区如何4k对齐,SSD使用之如何分区4K对齐
  3. 沐曦加入龙蜥社区,聚焦技术创新,繁荣开源生态
  4. Unity3D笔记六 GUI游戏界面
  5. Java安装 jdk环境配置
  6. 【洛谷P2947】向右看齐
  7. Strategy模式的具体实现
  8. Anaconda下Python中h5py与netCDF4模块下载与安装方法
  9. 数据管理体系之数据质量
  10. 家用路由器电源适配器9v和12v可以通用吗?