python - 在 Python 中展平树
问题描述
我有这棵树,我想按顺序展平树(不区分大小写),我创建extract_nodes_containing_string
以提取叶子,但以下代码不起作用:
class Node(object):
def __init__(self, name, children=None):
self.name = name
self.children = children or []
def __repr__(self):
return '<Node name={}>'.format(self.name)
def extract_nodes_containing_string(self, needle):
# TODO: Please implement me
# needs to be case insensitive
if needle is None: return needle
self.getflatten(needle)
def getflatten(self, root):
if root is None: return
self.getflatten(root.left)
self.getflatten(root.right)
current = root.left
if current is None: return
while current.right is not None:
current = current.right
current.right = root.right
root.right = root.left
root.left = None
# Example:
def create_tree():
return Node('root', [
Node("MaGaZiNo", [
Node("I"),
Node("Love"),
Node("magazino")
]),
Node("Hello", [
Node("Hello", [
Node("Hello", [
Node("World")
])
])
])
])
root = create_tree()
print(root.extract_nodes_containing_string('root') == [root])
如果有人可以帮助我,那就太好了。
解决方案
推荐阅读
- amazon-web-services - Can AWS Rekognition detect whether a face is real or a spoofed with no video analysis?
- python - 如何从列表中获取随机最大值?
- javascript - Swiper Slider — Active Index
- ios - How can I make a CGRect move randomly around the screen so long as the user is touching it?
- java - Mockk in Kotlin: Argument passed to verify is not a mock
- javascript - How to run HTML, CSS and JavaScript codes in Sublime Text 3?
- python - Got different answer from python numpy and Matlab for solving linear equations
- javascript - async function return array empty
- mobile - 卡片布局 - Flutter
- networking - 什么决定了 packETH 的最大数据包生成速度?