写一下伪代码。
已参与了 SegmentFault 思否社区 10 周年「问答」打卡 ,欢迎正在阅读的你也加入。
做树形整理,把树高弄出来,然后按树高+根节点+父节点的方式排序输出就行了。
这种应该是把逻辑写清楚,代码意思差不多就行了,好几十行写的也累看的也累,运行基本不可能一次过。
已参与了 SegmentFault 思否社区 10 周年「问答」打卡 ,欢迎正在阅读的你也加入。
不会写php,写了个python参考一下吧, 就是基础的广度优先搜索(bfs).
from typing import *
from collections import Counter
import queue
tree = {
2: [3, 9, 4],
7: [2],
3: [6],
4: [5],
5: [8],
10: [11]
}
degree = Counter()
for k in tree.keys():
degree[k] = 0
for vs in tree.values():
for v in vs:
degree[v] += 1
q = queue.Queue()
ans = []
for k, v in degree.items():
if v == 0:
q.put(k)
while not q.empty():
node = q.get()
ans.append(node)
if node in tree:
for nxt in tree[node]:
q.put(nxt)
print(ans)
8 回答2.6k 阅读
2 回答5.1k 阅读✓ 已解决
5 回答1.3k 阅读
4 回答1.4k 阅读✓ 已解决
4 回答1.2k 阅读✓ 已解决
3 回答2.2k 阅读
1 回答2.6k 阅读✓ 已解决
1、找到第一层,然后根据第一层进行递归查找即可
2、这道算法题对于初学者而言的确有点绕,希望好好研究一下我写逻辑哈
已参与了 SegmentFault 思否社区 10 周年「问答」打卡 ,欢迎正在阅读的你也加入。