2022年 11月 5日

python 输入list,输出一棵树

  1. #--*--coding:utf8--*--
  2. from collections import deque
  3. class TreeNode(object):
  4. def __init__(self, x):
  5. self.val = x
  6. self.left = None
  7. self.right = None
  8. class Tree(object):
  9. def __int__(self):
  10. self.root = None
  11. def geTree(self, arrList):
  12. if not arrList:
  13. return None
  14. arrLen = len(arrList)
  15. self.root = TreeNode(arrList[0])
  16. treeDeque = deque([self.root])
  17. num = 1
  18. while num < arrLen:
  19. node = treeDeque.popleft()
  20. if node is not None:
  21. print node.val,node.left,node.right
  22. node.left = TreeNode(arrList[num]) if arrList[num] is not None else None
  23. treeDeque.append(node.left)
  24. num += 1
  25. if num < arrLen:
  26. node.right = TreeNode(arrList[num]) if arrList[num] is not None else None
  27. treeDeque.append(node.right)
  28. num += 1
  29. def dfs(self):
  30. treeDeque = deque()
  31. treeDeque.append(self.root)
  32. res = []
  33. while treeDeque:
  34. node = treeDeque.popleft()
  35. if node is not None:
  36. res.append(node.val)
  37. treeDeque.append(node.left)
  38. treeDeque.append(node.right)
  39. return res
  40. def preQuery(self):
  41. res = []
  42. def dfs(node):
  43. if node:
  44. res.append(node.val)
  45. dfs(node.left)
  46. dfs(node.right)
  47. dfs(self.root)
  48. return res
  49. t = Tree()
  50. t.geTree([0,1,None,3,4,5,6,7,8])
  51. print t.dfs()
  52. print t.preQuery()

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