Skip to content

Instantly share code, notes, and snippets.

@xiezhenye
Created June 20, 2016 15:14
Show Gist options
  • Save xiezhenye/5c61c17310abbf2b818b1bb080cbe0b3 to your computer and use it in GitHub Desktop.
Save xiezhenye/5c61c17310abbf2b818b1bb080cbe0b3 to your computer and use it in GitHub Desktop.
from __future__ import print_function
class Node:
def __init__(self, name, children):
self.name = name
self.children = children
tree = Node(1, [
Node(2, [
Node(3, [
Node(4, []),
Node(5, [
Node(6,[])
]),
]),
Node(7, [
Node(8, []),
Node(9, []),
]),
]),
Node(10, [
Node(11, []),
Node(12, [
Node(13, []),
Node(14, [
Node(15, []),
]),
])
]),
Node(16, []),
])
def iterate(tree, callback):
if callback(tree):
return
for node in tree.children:
if iterate(node, callback):
return
iterate(tree, lambda node: bool(print(node.name)))
def findByName(tree, name):
ret = [None]
def callback(node):
if node.name == name:
ret[0] = node
return True
else:
return False
iterate(tree, callback)
return ret[0]
print(findByName(tree, 10).name)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment