- #--*--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把给定的列表转化成二叉树 – 潇湘旧友 – 博客园