python数据结构之二叉树的统计与转换实例

2019-10-06 16:02:41于海丽

    #     while stack:
    #         print stack.pop().data

    def levelorders(self, treenode):
        '层序(post-order,LRN)非递归遍历'
        from collections import deque
        if not treenode:
            return
        q = deque([treenode])
        while q:
            treenode = q.popleft()
            print treenode.data
            if treenode.left:
                q.append(treenode.left)
            if treenode.right:
                q.append(treenode.right)

    def getheight(self):
        ''' 获取二叉树深度 '''
        return self.__get_tree_height(self.root)

    def __get_tree_height(self, root):
        if root is 0:
            return 0
        if root.left is 0 and root.right is 0:
            return 1
        else:
            left = self.__get_tree_height(root.left)
            right = self.__get_tree_height(root.right)
            if left < right:
                return right + 1
            else:
                return left + 1

    def getleafcount(self):
        ''' 获取二叉树叶子数 '''
        return self.__count_leaf_node(self.root)

    def __count_leaf_node(self, root):
        res = 0
        if root is 0:
            return res