二叉树最小深度

简介: 二叉树最小深度

二叉树最小深度


参考链接:https://www.nowcoder.com/questionTerminal/e08819cfdeb34985a8de9c4e6562e724?f=discussion

题目描述

求给定二叉树的最小深度。最小深度是指树的根结点到最近叶子结点的最短路径上结点的数量。


基本思路

  1. 递归思路:

递归,若为空树返回0;

若左子树为空,则返回右子树的最小深度+1;(加1是因为要加上根这一层,下同)

若右子树为空,则返回左子树的最小深度+1;

若左右子树均不为空,则取左、右子树最小深度的较小值,+1;


  1. 非递规思路:

利用队列采用层序遍历,一旦找到一个叶节点,它肯定是最短的。


代码如下

//递归实现
int DepTreeMinPath(TreeNode *root)
{
  if(root == NULL){
  return 0;
  }
  if(root->left == NULL){   //如果左子树为空,则返回右子树的最小深度+1
  return DepTreeMinPath(root->right) + 1;
  }
  else if(root->right == NULL){ //如果右子树为空,则返回左子树的最小深度+1
  return DepTreeMinPath(root->left) + 1;
  }
  //左右子树都不为空,则取较小值
  int LeftHeight = DepTreeMinPath(root->left);
  int RightHeight = DepTreeMinPath(root->right);
  return LeftHeight > RightHeight ? (RightHeight + 1) : (LeftHeight + 1);
}
目录
相关文章
12_二叉树的最小深度
12_二叉树的最小深度
|
人工智能 BI
LeetCode-310 最小高度树
LeetCode-310 最小高度树
|
5月前
|
C++
二叉树的最小深度(C++)
二叉树的最小深度(C++)
30 1
|
5月前
|
C++ Python
leetcode-111:二叉树的最小深度
leetcode-111:二叉树的最小深度
40 0
|
12月前
【Leetcode -111.二叉树的最小深度 -112.路径总和】
【Leetcode -111.二叉树的最小深度 -112.路径总和】
41 0
|
12月前
|
算法 前端开发
前端算法-二叉树的最小深度
前端算法-二叉树的最小深度
|
存储 算法
算法训练Day17|● 104.二叉树的最大深度 559.n叉树的最大深度● 111.二叉树的最小深度● 222.完全二叉树的节点个数
算法训练Day17|● 104.二叉树的最大深度 559.n叉树的最大深度● 111.二叉树的最小深度● 222.完全二叉树的节点个数
Leetcode 111 二叉树最小深度
Leetcode 111 二叉树最小深度
123 0
力扣 111 104二叉树的最大深度和最小深度总结
力扣 111 104二叉树的最大深度和最小深度总结
49 0