本文整理汇总了Python中node.Node.is_leaf方法的典型用法代码示例。如果您正苦于以下问题:Python Node.is_leaf方法的具体用法?Python Node.is_leaf怎么用?Python Node.is_leaf使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类node.Node
的用法示例。
在下文中一共展示了Node.is_leaf方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_new_left
# 需要导入模块: from node import Node [as 别名]
# 或者: from node.Node import is_leaf [as 别名]
def test_new_left(self):
root = Node()
root.set_root()
left = root.new_left()
self.assertTrue(root.has_left())
self.assertFalse(root.has_right())
self.assertEqual(root.left, left)
self.assertEqual(left.parent, root)
self.assertFalse(root.is_leaf())
self.assertFalse(left.is_root())
self.assertTrue(left.is_leaf())
self.assertEqual('left', left.position)
示例2: test_new_right
# 需要导入模块: from node import Node [as 别名]
# 或者: from node.Node import is_leaf [as 别名]
def test_new_right(self):
root = Node()
root.set_root()
right = root.new_right()
self.assertTrue(root.has_right())
self.assertFalse(root.has_left())
self.assertEqual(root.right, right)
self.assertEqual(right.parent, root)
self.assertFalse(root.is_leaf())
self.assertFalse(right.is_root())
self.assertTrue(right.is_leaf())
self.assertEqual('right', right.position)
示例3: test_set_root
# 需要导入模块: from node import Node [as 别名]
# 或者: from node.Node import is_leaf [as 别名]
def test_set_root(self):
node = Node()
node.set_root()
self.assertTrue(node.is_root())
self.assertEqual('root', node.position)
self.assertTrue(node.is_leaf())
示例4: Tree
# 需要导入模块: from node import Node [as 别名]
# 或者: from node.Node import is_leaf [as 别名]
class Tree(object):
def __init__(self, formula):
self.root = Node()
self._parse_formula(formula)
def __str__(self):
return self._inorder_string(self.root)
def __eq__(self, other):
return str(self) == str(other)
def _parse_formula(self, formula):
"""
Makes a binary tree from the given Formula. Used only at initialization.
:param formula: String
:return: None
"""
term = _prepare_parse(formula)
current = self.root
current.set_root()
for item in term:
if item in [':', '+', '*', '->']:
current.token = item
current = current.new_right()
elif item == '!':
current = current.parent
current.token = item
current.left = None
current = current.new_right()
elif item == '(':
current = current.new_left()
elif item == ')':
current = current.parent
else:
current.token = item
current = current.parent
def _inorder_string(self, node):
'''
:param node: Node
Node from where on the inorder should start.
:return term: string
Nodes as a String in inorder.
'''
term = ''
if not node.is_leaf():
term += '('
if node.has_left():
term += self._inorder_string(node.left)
term += node.token
if node.has_right():
term += self._inorder_string(node.right) + ')'
return term
def _preorder_nodes(self, node):
'''
:param node: Node
Node from where the preoder should start.
:return nodes: list
All nodes in preoder.
'''
nodes = [node]
if node.has_left():
nodes += self._preorder_nodes(node.left)
if node.has_right():
nodes += self._preorder_nodes(node.right)
return nodes
def first(self, token):
'''
Find first occurrence of a certain token in the tree using preorder.
:param token: String
:return node: Node
'''
nodes = self._preorder_nodes(self.root)
for node in nodes:
if node.token == token:
return node
return None
def is_wild(self):
return self.root.is_leaf() and ('X' in self.root.token or 'Y' in self.root.token)
def _left_split(self, plus_node):
'''
Caution: makes direct changes to the tree
Expects the node to have token '+'
'''
if plus_node.position == 'root':
plus_node.left.set_root()
self.root = plus_node.left
else:
if plus_node.position == 'left':
plus_node.parent.set_left(plus_node.left)
elif plus_node.position == 'right':
plus_node.parent.set_right(plus_node.left)
#.........这里部分代码省略.........