python 输入list,输出一棵树

#--*--coding:utf8--*--
from collections import deque


class TreeNode(object):
    def __init__(self, x):
        self.val = x
        self.left = None
        self.right = None

class Tree(object):
    def __int__(self):
        self.root = None
        
    def geTree(self, arrList):
        if not arrList:
            return None
        arrLen = len(arrList)
        self.root = TreeNode(arrList[0])
        treeDeque = deque([self.root])
        num = 1

        while num < arrLen:
            node = treeDeque.popleft()
            
            if node is not None:
                print node.val,node.left,node.right
                node.left = TreeNode(arrList[num]) if arrList[num] is not None else None
                treeDeque.append(node.left)
                num += 1
                if num < arrLen:
                    node.right = TreeNode(arrList[num]) if arrList[num] is not None else None
                    treeDeque.append(node.right)
                    num += 1
                

    def dfs(self):
        treeDeque = deque()
        treeDeque.append(self.root)
        res = []
        while treeDeque:
            node = treeDeque.popleft()
            if node is not None:
                res.append(node.val)
                treeDeque.append(node.left)
                treeDeque.append(node.right)
        return res

    def preQuery(self):
        res = []

        def dfs(node):
            if node:
                res.append(node.val)
                dfs(node.left)
                dfs(node.right)
        dfs(self.root)

        return res


t = Tree()
t.geTree([0,1,None,3,4,5,6,7,8])
print t.dfs()
print t.preQuery()


        

参考:Python把给定的列表转化成二叉树 - 潇湘旧友 - 博客园


版权声明:本文为zqf_CSDN原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。