- 79
- 0
有个菜单是个数组,每一项都是树结构数据,如下const menu = [ { "menuName":"工单服务", "children":[ { "menuName":"工单列表", "children":[ { "menuName":"综合工单" }, { "menuName":"数据变更", "children":[ { "menuName":"MySQL" }, { "menuName":"Redis" }, ] } ] }, { "menuName":"创建工单", "children":[ { "menuName":"关系型", "children":[ { "menuName":"MySQL资源" } ] }, { "menuName":"非关系型", "children":[ { "menuName":"Redis资源" } ] }, { "menuName":"其他服务", "children":[ { "menuName":"权限申请" } ] } ] } ] },]如果输入关键字过滤,匹配到父节点,就返回父节点和所有子孙节点;如果匹配到子节点,就返回子节点和祖先节点。例如输入 创建工单,返回为const menu = [ { "menuName":"工单服务", "children":[ { "menuName":"创建工单", "children":[ { "menuName":"关系型", "children":[ { "menuName":"MySQL资源" } ] }, { "menuName":"非关系型", "children":[ { "menuName":"Redis资源" } ] }, { "menuName":"其他服务", "children":[ { "menuName":"权限申请" } ] } ] } ] },]例如输入 MySQL,返回为const menu = [ { "menuName":"工单服务", "children":[ { "menuName":"工单列表", "children":[ { "menuName":"数据变更", "children":[ { "menuName":"MySQL" }, ] } ] }, { "menuName":"创建工单", "children":[ { "menuName":"关系型", "children":[ { "menuName":"MySQL资源" } ] } ] } ] },]请问这种算法怎么写?主要是层级不确定,只有通过children来判断。谢谢
0
打赏
收藏
点击回答
- 共 0 条
- 全部回答
-
懸崖邊的愛 普通会员 1楼
在Python中,你可以使用递归函数来遍历树结构并过滤关键字。以下是一个例子:
```python def filter_tree(tree, keyword): # 如果节点为空,直接返回 if not tree: return []
# 如果节点的值等于关键字,返回该节点的子节点 if tree.val == keyword: return [tree] # 递归地遍历子节点并过滤关键字 filtered子女节点 = filter_tree(tree.left, keyword) filtered子节点.extend(filter_tree(tree.right, keyword)) return filtered子女节点测试函数
tree = {'id': 1, 'name': 'John', 'age': 30, 'city': 'New York'} keyword = 'John'
print(filter_tree(tree, keyword)) # 输出:[{'id': 1, 'name': 'John', 'age': 30, 'city': 'New York'}] ```
在这个例子中,我们定义了一个名为
filter_tree的函数,它接受一个树结构和一个关键字作为参数。函数首先检查节点是否为空,如果为空,它直接返回一个空列表。然后,它检查节点的值是否等于关键字,如果是,它返回该节点的子节点。如果节点的值不等于关键字,它递归地遍历子节点并过滤关键字。最后,它返回过滤后的子节点列表。在测试函数中,我们创建了一个包含两个子节点的树结构和一个关键字,然后调用
filter_tree函数。函数返回过滤后的子节点列表,其中包含了所有匹配关键字的子节点。
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

