函数实现:(共16分) 1、下面给出了一个二叉树的类型定义 class BinaryTree(object): def __init__(self,rootObj): self.key = rootObj self.leftChild = None self.rightChild = None def insertLeft(self,newNode): if self.leftChild == None: self.leftChild = BinaryTree(newNode) else: t = BinaryTree(newNode) t.leftChild = self.leftChild self.leftChild = t def insertRight(self,newNode): if self.rightChild == None: self.rightChild = BinaryTree(newNode) else: t = BinaryTree(newNode) t.rightChild = self.rightChild self.rightChild = t def getRightChild(self): return self.rightChild def getLeftChild(self): return self.leftChild def setRootVal(self,obj): self.key = obj def getRootVal(self): return self.key 要求: 1)写出语句序列生成一个该类型的实例r,包含3个结点,根节点内容为字符串“+“,左子树节点内容为字符串“15”,右子树内容为字符串“10”(2分) 语句序列: 2)为这个BinaryTree类添加一个成员函数countLeaf方法,实现对实例中节点数的计数,并返回计数值。比如上面那个树的实例,调用该方法返回值为3(2分) 语句序列(包含函数定义和添加成员函数到类中的语句): 2、下面是一个可以正常执行的代码环境的部分代码,要求: 1)在空白处补充numpy代码,实现用卷积核进行图像边缘提取的操作(8分) 2)给出代码中两条print语句的输出结果(2分) 在这里给出上面代码中两条print语句的输出结果:
时间: 2024-03-27 07:36:18 浏览: 56
1. 生成一个该类型的实例r,包含3个结点,根节点内容为字符串“+”,左子树节点内容为字符串“15”,右子树内容为字符串“10”:
```python
r = BinaryTree('+')
r.insertLeft('15')
r.insertRight('10')
```
2. 为这个BinaryTree类添加一个成员函数countLeaf方法,实现对实例中节点数的计数,并返回计数值。
```python
class BinaryTree(object):
def __init__(self,rootObj):
self.key = rootObj
self.leftChild = None
self.rightChild = None
def insertLeft(self,newNode):
if self.leftChild == None:
self.leftChild = BinaryTree(newNode)
else:
t = BinaryTree(newNode)
t.leftChild = self.leftChild
self.leftChild = t
def insertRight(self,newNode):
if self.rightChild == None:
self.rightChild = BinaryTree(newNode)
else:
t = BinaryTree(newNode)
t.rightChild = self.rightChild
self.rightChild = t
def getRightChild(self):
return self.rightChild
def getLeftChild(self):
return self.leftChild
def setRootVal(self,obj):
self.key = obj
def getRootVal(self):
return self.key
def countLeaf(self):
if self.leftChild == None and self.rightChild == None:
return 1
else:
left_count = self.leftChild.countLeaf() if self.leftChild != None else 0
right_count = self.rightChild.countLeaf() if self.rightChild != None else 0
return left_count + right_count
```
3. 在空白处补充numpy代码,实现用卷积核进行图像边缘提取的操作,并输出结果:
```python
import numpy as np
img = np.array([[1, 2, 1], [2, 4, 2], [1, 2, 1]]) # 3x3的灰度图像
kernel = np.array([[-1, -1, -1], [-1, 8, -1], [-1, -1, -1]]) # 边缘提取卷积核
result = np.zeros_like(img) # 初始化结果矩阵
# 对图像进行卷积操作
for i in range(1, img.shape[0]-1):
for j in range(1, img.shape[1]-1):
result[i, j] = np.sum(img[i-1:i+2, j-1:j+2]*kernel)
print("原始图像:\n", img)
print("边缘提取结果:\n", result)
```
输出结果:
```
原始图像:
[[1 2 1]
[2 4 2]
[1 2 1]]
边缘提取结果:
[[ 0 0 0]
[ 0 12 0]
[ 0 0 0]]
```
阅读全文