class BiTreeNode(object):
"""节点链接法"""
def __init__(self, data):
self.data = data
self.lchild = None
self.rchild = None
a = BiTreeNode('A')
b = BiTreeNode('B')
c = BiTreeNode('C')
d = BiTreeNode('D')
e = BiTreeNode('E')
f = BiTreeNode('F')
g = BiTreeNode('G')
e.lchild = a
e.rchild = g
a.rchild = c
c.lchild = b
c.rchild = d
g.rchild = f
root = e
print(root.lchild.rchild.data)
二叉树的遍历
def pre_order(root):
"""二叉树的前序遍历"""
if root:
print(root.data, end=', ')
pre_order(root.lchild)
pre_order(root.rchild)
def in_order(root):
"""二叉树的中序遍历"""
if root:
in_order(root.lchild)
print(root.data, end=', ')
in_order(root.rchild)
def post_order(root):
"""二叉树的后序遍历"""
if root:
post_order(root.lchild)
post_order(root.rchild)
print(root.data, end=', ')
from collections import deque
def level_order(root):
"""二叉树的层次遍历"""
q = deque()
q.append(root)
while len(q) > 0:
node = q.popleft()
print(node.data, end=', ')
if node.lchild:
q.append(node.lchild)
if node.rchild:
q.append(node.rchild)