华为OD-2024年E卷-树状结构查询[200分] -- python

问题描述:

通常使用多行的节点、父节点表示一棵树,比如
西安 陕西
陕西 中国
江西 中国
中国 亚洲
泰国 亚洲
输入一个节点之后,请打印出来树中他的所有下层节点
输入描述
第一行输入行数,下面是多行数据,每行以空格区分节点和父节点
接着是查询节点
输出描述
输出查询节点的所有下层节点。以字典序排序
补充说明
树中的节点是唯一的,不会出现两个节点,是同一个名字

5
b a
c a
d c
f c
e d
c
d
e
f

解题思路:

需要查询一棵树指定节点的所有下层节点,一个简单的bfs搜索即可,不了解实现方式的多写遍就好了:

  1. 将初始化节点接入列表
  2. 遍历列表直到最底层
  3. 弹出队首元素,遍历输入列表,将满足条件的加入列表

sort()函数对非数字会按字典序排序,如下:

a = [3,5,1,7,12]
a.sort()
print(a)

b = ['3','5','1','7','12']
b.sort()
print(b)
[1, 3, 5, 7, 12]
['1', '12', '3', '5', '7']

代码实现:

n = int(input())
arr = []
for i in range(n):
    x,y = input().split()
    arr.append((x,y))
search = input()
q = []
q.append(search)
ans = []
while q:
    s = q.pop()
    for (x,y) in arr:
        if y == s:
            q.append(x)
            ans.append(x)
ans.sort()
for i in ans:
    print(i)

你可能感兴趣的:(华为od,python)