求一个二叉树的最小深度
时间: 2024-03-30 10:10:42 浏览: 72
二叉树的最小深度是从根节点到最近的叶子节点的最短路径长度。如果一个二叉树只有一个节点,那么它的最小深度为1。如果一个二叉树的左子树或右子树为空,那么它的最小深度应该是另一棵子树的最小深度加1。如果左右子树都不为空,那么它的最小深度应该是左右子树的最小深度的较小值加1。
以下是一个Java实现:
```
public int minDepth(TreeNode root) {
if (root == null) {
return 0;
}
if (root.left == null && root.right == null) {
return 1;
}
int leftDepth = root.left != null ? minDepth(root.left) : Integer.MAX_VALUE;
int rightDepth = root.right != null ? minDepth(root.right) : Integer.MAX_VALUE;
return Math.min(leftDepth, rightDepth) + 1;
}
```
其中,TreeNode是二叉树节点的定义。
相关问题
js找到二叉树 最小深度
要找到二叉树的最小深度,可以使用深度优先搜索(DFS)来遍历二叉树,记录每个叶子节点的深度,然后返回最小深度。
以下是使用 JavaScript 实现的示例代码:
```javascript
function minDepth(root) {
if (!root) {
return 0;
}
// 使用递归进行深度优先搜索
function dfs(node, depth) {
if (!node.left && !node.right) {
// 叶子节点,返回当前深度
return depth;
}
let leftDepth = node.left ? dfs(node.left, depth + 1) : Infinity;
let rightDepth = node.right ? dfs(node.right, depth + 1) : Infinity;
return Math.min(leftDepth, rightDepth);
}
return dfs(root, 1);
}
```
注意,上述代码假设二叉树的节点类包含 `left` 和 `right` 属性,分别指向左右子节点。调用 `minDepth` 函数,并传入根节点,即可得到二叉树的最小深度。
具有n个结点的二叉树的最小深度是多少
二叉树的最小深度是从根节点到最近的叶子节点的最短路径长度。如果二叉树为空,则最小深度为0。如果二叉树只有根节点,则最小深度为1。对于其他情况,可以通过递归求解左子树和右子树的最小深度,然后取较小值并加1,即可得到整个二叉树的最小深度。具体实现可以参考以下代码:
```
int minDepth(TreeNode* root) {
if (root == NULL) {
return 0;
}
if (root->left == NULL && root->right == NULL) {
return 1;
}
int leftDepth = INT_MAX;
if (root->left != NULL) {
leftDepth = minDepth(root->left);
}
int rightDepth = INT_MAX;
if (root->right != NULL) {
rightDepth = minDepth(root->right);
}
return min(leftDepth, rightDepth) + 1;
}
```
其中,TreeNode是二叉树的结点定义,INT_MAX是一个常量,表示int类型的最大值。
阅读全文