二叉树
1 二叉树:
2 二叉树的遍历:
- 广度优先遍历:一层一层对节点进行遍历
- 尝试优先遍历:
3 二叉树的遍历
class Node(object):
def __init__(self, item):
self.item = item
self.left = None
self.right = None
class Tree(object):
def __init__(self):
self.root = None
def add(self, item):
node = Node(item)
if self.root is None:
self.root = node
return
root = self.root
cur_list = [root]
while cur_list:
cur = cur_list.pop(0)
if cur.left is None:
cur.left = node
return
else:
cur_list.append(cur.left)
if cur.right is None:
cur.right = node
return
else:
cur_list.append(cur.right)
def travel(self):
root = self.root
cur_list = [root]
while cur_list:
cur = cur_list.pop(0)
print(cur.item)
if cur.left:
cur_list.append(cur.left)
if cur.right:
cur_list.append(cur.right)
def forward(self, root):
"""
前序:根左右
:param root:
:return:
"""
if root is None:
return
print(root.item)
self.forward(root.left)
self.forward(root.right)
def middle(self, root):
"""
中序:左根右
:param root:
:return:
"""
if root is None:
return
self.middle(root.left)
print(root.item)
self.middle(root.right)
def back(self, root):
"""
后序:左右根
:param root:
:return:
"""
if root is None:
return
self.back(root.left)
self.back(root.right)
print(root.item)
tree = Tree()
tree.add(1)
tree.add(2)
tree.add(3)
tree.add(4)
tree.add(5)
tree.add(6)
tree.travel()
tree.forward(tree.root)
tree.middle(tree.root)
tree.back(tree.root)
4 排序二叉树实现排序
class Node(object):
def __init__(self, item):
self.item = item
self.left = None
self.right = None
class Tree(object):
def __init__(self):
self.root = None
def sort_tree(self, item):
node = Node(item)
if self.root is None:
self.root = node
return
cur = self.root
while cur:
if item < cur.item:
if cur.left is None:
cur.left = node
return
else:
cur = cur.left
else:
if cur.right is None:
cur.right = node
return
else:
cur = cur.right
def travel(self):
root = self.root
cur_list = [root]
while cur_list:
cur = cur_list.pop(0)
print(cur.item)
if cur.left:
cur_list.append(cur.left)
if cur.right:
cur_list.append(cur.right)
def middle(self, root):
if root is None:
return
self.middle(root.left)
print(root.item)
self.middle(root.right)
tree = Tree()
a_list = [94, 3, 86, 99, 19, 78, 28, 55, 47, 31]
for i in a_list:
tree.sort_tree(i)
tree.travel()
tree.middle(tree.root)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报