python初入江湖
二叉树:
相关代码如下:
# -*- codeing = utf-8 -*-
# @Time : 2022/5/3 14:53
# @Author : lxw_pro
# @File : py-08.py
# @Software : PyCharm
# 二叉树:
class BriTreeNode:
def __init__(self, data):
self.data = data
self.lchild = None # 左孩子
self.rchild = None # 右孩子
a = BriTreeNode('A')
b = BriTreeNode('B')
c = BriTreeNode('C')
d = BriTreeNode('D')
e = BriTreeNode('E')
f = BriTreeNode('F')
g = BriTreeNode('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) # C
# 前序遍历:~先根中左后右
def pre_oreder(root):
if root:
print(root.data, end=',')
pre_oreder(root.lchild)
pre_oreder(root.rchild)
pre_oreder(root) # E,A,C,B,D,G,F,
print()
# 中序遍历:
def in_order(root):
if root:
in_order(root.lchild)
print(root.data, end=',')
in_order(root.rchild)
in_order(root) # A,B,C,D,E,G,F,
print()
# 后序遍历:
def post_order(root):
if root:
post_order(root.lchild)
post_order(root.rchild)
print(root.data, end=',')
post_order(root) # B,D,C,A,F,G,E,
print()
# 层次遍历:
from collections import deque
def level_order(root):
queue = deque()
queue.append(root)
while len(queue) > 0: # 只要队不空
node = queue.popleft()
print(node.data, end=',')
if node.lchild:
queue.append(node.lchild)
if node.rchild:
queue.append(node.rchild) # E,A,G,C,F,B,D,
level_order(root)
运行结果如下:
E,A,C,B,D,G,F,
A,B,C,D,E,G,F,
B,D,C,A,F,G,E,
E,A,G,C,F,B,D,
江湖一言:
人的一生就是一个不断得而复失的过程,得到的不一定始终是你的,失去的也并非就代表着结束,也许是在能力之外的。