写程序实现如下功能 1、输入字符串序列,进行二叉树的构建; 2、基于构建的的二叉树结构计算其深度; 3、基于构建的二叉树结构计算其叶子结点个数。
时间: 2024-05-02 13:22:55 浏览: 12
可以使用递归来实现二叉树的构建、深度计算和叶子结点计数。具体的实现如下:
```python
class Node:
def __init__(self, val):
self.val = val
self.left = None
self.right = None
def construct_tree(arr):
if not arr:
return None
mid = len(arr) // 2
root = Node(arr[mid])
root.left = construct_tree(arr[:mid])
root.right = construct_tree(arr[mid+1:])
return root
def get_depth(root):
if not root:
return 0
left_depth = get_depth(root.left)
right_depth = get_depth(root.right)
return max(left_depth, right_depth) + 1
def count_leaves(root):
if not root:
return 0
if not root.left and not root.right:
return 1
return count_leaves(root.left) + count_leaves(root.right)
```
其中,`construct_tree` 函数用来构建二叉树。我们可以先取数组的中间元素作为根节点,然后递归构建左右子树。注意,我们采用了一个常见的技巧,即将排序后的数组转化成二叉搜索树,这样能够保证树的平衡。
`get_depth` 函数用来计算二叉树的深度。我们可以分别计算左右子树的深度,然后取最大值加一即可。
`count_leaves` 函数用来计算二叉树的叶子结点数。如果当前节点没有左子树和右子树,那么它就是一个叶子结点。否则,我们可以递归计算左右子树的叶子结点数,然后将它们相加即可。