用DevC++设计算法求二叉树的深度
时间: 2023-06-08 15:07:32 浏览: 53
好的,为您解答。下面是求解二叉树深度的算法:
1. 如果二叉树为空,深度为0。
2. 如果二叉树只有一个节点,深度为1。
3. 否则,二叉树的深度等于左右子树深度的较大值加1。
具体的实现可以用递归的方式,每次递归计算左右子树深度的较大值即可。以下是示例代码:
```
int tree_depth(struct TreeNode* root) {
if (root == NULL) {
return 0;
}
int left_depth = tree_depth(root->left);
int right_depth = tree_depth(root->right);
return (left_depth > right_depth) ? (left_depth + 1) : (right_depth + 1);
}
```
希望能够帮到您,如果您还有其他问题,可以继续问我。
相关问题
设计算法求二叉树的深度
计算二叉树的深度可以通过遍历算法来实现。可以采用递归方式计算每个子树的深度,然后选出左右子树深度的较大值,加上根节点,即为整个二叉树的深度。
具体实现方法如下:
1. 如果二叉树为空,则深度为0。
2. 否则,递归计算左子树和右子树的深度。
3. 取左右子树深度的较大值,加上1(根节点深度),即为整个二叉树的深度。
Python代码示例:
```python
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
def depth(root: TreeNode) -> int:
if not root:
return 0
left_depth = depth(root.left)
right_depth = depth(root.right)
return max(left_depth, right_depth) + 1
# 示例
root = TreeNode(1)
root.left = TreeNode(2)
root.right = TreeNode(3)
root.left.left = TreeNode(4)
root.right.right = TreeNode(5)
print(depth(root)) # 输出3
```
以上代码中,我们定义了一个 TreeNode 类,表示二叉树的节点,包含一个值 val 和两个指针 left 和 right 分别指向左右子树。depth 函数为计算二叉树深度的主函数,采用了递归算法实现。具体细节注释在代码中。
希望这个回答对你有所帮助!
设计算法求二叉树所包含的叶结点的数目并求二叉树的深度。
以下是求解二叉树叶结点数目和深度的算法:
```python
# 定义二叉树结点类
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
# 求解二叉树叶结点数目和深度的函数
def count_leaf_and_depth(root):
if not root: # 如果根节点为空,返回0
return 0, 0
if not root.left and not root.right: # 如果根节点为叶结点,返回1和1
return 1, 1
left_leaf, left_depth = count_leaf_and_depth(root.left) # 递归计算左子树的叶结点数目和深度
right_leaf, right_depth = count_leaf_and_depth(root.right) # 递归计算右子树的叶结点数目和深度
leaf = left_leaf + right_leaf # 计算当前树的叶结点数目
depth = max(left_depth, right_depth) + 1 # 计算当前树的深度
return leaf, depth
```