二叉树的最大深度和最小深度
来源:互联网 发布:狗狗爱 蝴蝶结 知乎 编辑:程序博客网 时间:2024/05/19 15:21
二叉树的定义:
struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {}};
二叉树的最大深度
给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的距离。
如果二叉树为空,则深度为0
如果不为空,分别求左子树的深度和右子树的深度,取最大的再加1。
int maxDepth(TreeNode *root) { if(root == nullptr) return 0; //分别计算左子树和右子树的深度 int leftDepth = maxDepth(root->left) + 1; int rightDepth = maxDepth(root->right) + 1; return leftDepth > rightDepth ? leftDepth: rightDepth; }
二叉树的最小深度
给定一个二叉树,找出其最小深度。
二叉树的最小深度为根节点到最近叶子节点的距离。
两种实现方法:
一种就是计算左子树和右子树深度的时候,判断是否等于0,如果等于0,说明该子树不存在,深度赋值为最大值。
int minDepth(TreeNode *root) { if(root == NULL) return false; if(root->left == NULL && root->right == NULL) return 1; int leftDepth = minDepth(root->left); if(leftDepth == 0) leftDepth = INT_MAX; int rightDepth = minDepth(root->right); if(rightDepth == 0) rightDepth = INT_MAX; return leftDepth < rightDepth ? (leftDepth + 1) : (rightDepth + 1); }
第二种就是判断左子树或右子树是否为空,若左子树为空,则返回右子树的深度,反之返回左子树的深度,如果都不为空,则返回左子树和右子树深度的最小值。
int minDepth(TreeNode *root) { if(root == nullptr) return 0; //判断左子树或右子树是否为空 //若左子树为空,则返回右子树的深度,反之返回左子树的深度 if(root->left == nullptr) return minDepth(root->right) + 1; if(root->right == nullptr) return minDepth(root->left) + 1; //如果都不为空,则返回左子树和右子树深度的最小值 int leftDepth = minDepth(root->left) + 1; int rightDepth = minDepth(root->right) + 1; return leftDepth < rightDepth ? leftDepth: rightDepth; }
2 0
- 二叉树最大深度和最小深度
- 二叉树最大深度和最小深度
- 二叉树的最大深度和最小深度
- 二叉树的最大深度和最小深度实现
- 二叉树的最大深度 & 二叉树的最小深度
- 二叉树的最大深度 & 二叉树的最小深度
- 二叉树深度(最大和最小)
- 二叉树的最大最小深度
- 二叉树最大 最小深度
- 二叉树 最大最小深度
- 二叉树的最大深度与最小深度
- 二叉树的最大深度与最小深度
- leedcode二叉树的最小深度与最大深度
- 二叉树的最大深度与最小深度
- 求二叉树的最大深度和最小深度以及之间的差
- 二叉树(创建、遍历、树的最大深度和最小深度)
- 二叉树的最大深度和宽度
- python_lintcode_97二叉树的最大深度 _155二叉树的最小深度
- 2017安卓开发工程师面试题总结
- CAN总线位定时和同步机制的分析
- Spring Boot 学习2--Spring Boot返回json数据
- 泊松分布的学习
- 指数分布
- 二叉树的最大深度和最小深度
- libsvm在MATLAB中的简单使用
- 管理学十大定理
- Ilog Cplex学习历程---可不可…
- 这些年,都忘记的那些事儿---转载…
- Ajax()方法如何与后台交互
- 调用Cplex中.mod和.dat的两种方法
- 高性能移动端开发
- MySQL的安装及彻底卸载