当前位置: 首页>>代码示例>>Python>>正文


Python Node.is_leaf方法代码示例

本文整理汇总了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)
开发者ID:lyriael,项目名称:j-logic,代码行数:14,代码来源:test_node.py

示例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)
开发者ID:lyriael,项目名称:j-logic,代码行数:14,代码来源:test_node.py

示例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())
开发者ID:lyriael,项目名称:j-logic,代码行数:8,代码来源:test_node.py

示例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)
#.........这里部分代码省略.........
开发者ID:lyriael,项目名称:j-logic,代码行数:103,代码来源:tree.py


注:本文中的node.Node.is_leaf方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。