__author__ = "WSX"

 class Node:
def __init__(self, val = None, left = None, right = None):
self.val = val
self.left = left
self.right = right class tree:
def __init__(self, L):
self.val = L def bulid(self,root, i): #将列表转化建立二叉树
if i < len(self.val):
root = Node(val = self.val[i])
root.left = self.bulid(root.left, 2*i+1)
root.right = self.bulid(root.right, 2*i+2)
return root
return root def preTraverse(self, tree_):
root = tree_
if root:
print(root.val)
self.preTraverse(root.left)
self.preTraverse(root.right) def midTraverse(self, tree_):
root = tree_
if root:
self.preTraverse(root.left)
print(root.val)
self.preTraverse(root.right) def postTraverse(self, tree_):
root = tree_
if root:
self.preTraverse(root.left)
self.preTraverse(root.right)
print(root.val) def cengci(self, tree_):
root = tree_
queue = [root] #借助队列
while root and len(queue)!= 0:
print(queue[0].val) #visit
if queue[0].left:
queue.append(queue[0].left)
if queue[0].right:
queue.append(queue[0].right)
queue.pop(0) T = tree(['','','',"","",""])
root = T.bulid(Node(), 0)
print("preTraverse"); T.preTraverse(root)
print("postTraverse");T.postTraverse(root)
print("midTraverse");T.midTraverse(root)
print("cengci");T.cengci(root)

非递归遍历:

 __author__ = "WSX"

 def pre(root):
if not root:
return None
stack = [root]
res = []
while stack:
res.append(root.val)
if root.right:
stack.append(root.right)
if root.left:
stack.append(root.left)
root = stack.pop()
return res def inOrderTraverse(node):
stack = []
pos = node
while pos is not None or len(stack) > 0:
if pos is not None:
stack.append(pos)
pos = pos.left
else:
pos = stack.pop()
print(pos.val)
pos = pos.right def postOrderTraverse(node):
stack = [node]
stack2 = []
while len(stack) > 0:
node = stack.pop()
stack2.append(node)
if node.left is not None:
stack.append(node.left)
if node.right is not None:
stack.append(node.right)
while len(stack2) > 0:
print(stack2.pop().val)

最新文章

  1. [转载]Google Guava官方教程(中文版)
  2. CDR VBA将字母改为大写
  3. C#综合揭秘——通过修改注册表建立Windows自定义协议
  4. Node出错导致运行崩溃的解决方案
  5. 关于ext3,ext4,xfs和btrfs文件系统性能对比
  6. mysql日期加减&lt;转&gt;
  7. 浅谈Apache Spark的6个发光点(CSDN)
  8. exec、eval
  9. 自己动手实现SharePointList的分页展示
  10. 用于A*的 二叉堆 AS3实现
  11. syskey——让你的电脑更加安全
  12. RDSS和RNSS
  13. mysql常见的问题
  14. Python assert 断言函数
  15. linux inotify 文件变化检测
  16. emp架构
  17. elasticsearch6.7 05. Document APIs(1)data replication model
  18. B. Light It Up
  19. mysql5.7 生成列 generated column
  20. MySQL升5.6引发的问题

热门文章

  1. 【POJ1284】Primitive Roots
  2. 【总结整理】UGC内容
  3. iOS导航栏自由缩放头像效果
  4. 项目介绍4 y有用
  5. Checked异常和Runtime异常体系
  6. Spring MVC拦截器(Interceptor )详解
  7. Openssl pkcs7命令
  8. spring 获取 WebApplicationContext的几种方法
  9. TF Boys (TensorFlow Boys ) 养成记(四):TensorFlow 简易 CIFAR10 分类网络
  10. Redis 数据库学习