用python实现二叉树
一、定义数据结构
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
二、初始化数据
示例数据如图所示
s1 = TreeNode(4)
s2 = TreeNode(5)
s3 = TreeNode(2,s1,s2)
s4 = TreeNode(6)
s5 = TreeNode(7)
s6 = TreeNode(3,s4,s5)
root = TreeNode(1,s3,s6)
三、遍历方法
3.1前序遍历
def pre(root,res):
if not root:
return
global t
t = res+str(root.val)
pre(root.left,t)
pre(root.right,t)
return(t)
3.2后序遍历
def post(root,res):
if not root:
return
global t
t = res
post(root.left,t)
post(root.right,t)
t = t+str(root.val)
return(t)
3.3中序遍历
def mid(root,res):
if not root:
return
global t
t = res
mid(root.left,t)
t = t+str(root.val)
mid(root.right,t)
return(t)
3.4层次遍历
def lev(root):
if not root:
return
global t
t = ''
stack = []
stack.append(root)
while stack:
node = stack.pop(0) # 实现先进先出
t = t+str(node.val)
if node.left:
stack.append(node.left)
if node.right:
stack.append(node.right)
return(t)
3.5调用及执行结果
res = ''
print(pre(root,res))
print(mid(root,res))
print(post(root,res))
print(lev(root))
执行结果如下: