数据结构 假设一颗二叉树中每个结点值为单个字符,采用二叉链存储结构存储。设计一个算法,求二叉树b中最小值的节点值
时间: 2023-11-27 07:53:57 浏览: 142
可以使用递归的方式来实现二叉树中最小值的查找。
从根节点开始,分别递归查找左子树和右子树的最小值。比较左子树的最小值、右子树的最小值和当前节点的值,得到三者中的最小值即可。
以下是具体的算法实现:
```python
# 定义二叉树节点类
class TreeNode:
def __init__(self, val):
self.val = val
self.left = None
self.right = None
def find_min_node(root):
if not root:
return None
# 递归查找左子树和右子树的最小值
left_min = find_min_node(root.left)
right_min = find_min_node(root.right)
# 比较左子树的最小值、右子树的最小值和当前节点的值,得到三者中的最小值
curr_min = root.val
if left_min and left_min.val < curr_min:
curr_min = left_min.val
if right_min and right_min.val < curr_min:
curr_min = right_min.val
return TreeNode(curr_min)
```
这个算法的时间复杂度是 O(n),其中 n 是二叉树中节点的个数。
阅读全文