Python数据结构——上机考试
Posted huamanggg
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python数据结构——上机考试相关的知识,希望对你有一定的参考价值。
实现一个链表,并构造一个方法,找到倒数第x个节点的值
# 单链表节点创建
class LNode:
def __init__(self,elem,next = None):
self.elem = elem
self.next = next
# 单链表创建
class LList:
def __init__(self):
self.head = None# 头指针
self.rear = None# 尾指针
self.size = 0
# 尾部插入
def append(self,elem):
last_node = LNode(elem,None)
if self.head is None:
self.head = last_node
self.rear = last_node
self.size += 1
return
p = self.rear
self.rear = last_node
p.next = last_node
self.size += 1
# 查询倒数第x个节点
def find(self,x):
num = self.size - x
for each in range(num):
self.head = self.head.next
return self.head.elem
l = LList()
for i in range(1,8):
l.append(i)
print(l.find(3))
实现一个二叉数,并构造一个方法求出树的深度
# 节点类
class Node():
def __init__(self,elem):
self.elem = elem
self.left = None
self.right = None
# 树的封装
class Tree():
def __init__(self):
# 根节点
self.root = None
# 增加节点
def add(self,elem):
# 实例化一个节点类
node = Node(elem)
tmp = [self.root]
# 先判断根节点是否为空
if self.root is None:
self.root = node
return
while tmp:
n = tmp.pop(0)
# 取出第一个元素,判断他的左子节点,若没有就加上去
if n.left is None:
n.left = node
return
else:
tmp.append(n.left)
# 同理判断右子节点
if n.right is None:
n.right = node
return
else:
tmp.append(n.right)
# 利用递归实现对高度的记录
def depth(self,node):
if node is None:
return 0
else:
l = self.depth(node.left) + 1
r = self.depth(node.right) + 1
return max(l,r)
t = Tree()
for i in range(9):
t.add(i)
print(t.depth(t.root))
以上是关于Python数据结构——上机考试的主要内容,如果未能解决你的问题,请参考以下文章