1.先(根)序遍历的递归算法定义:
若二叉树非空,则依次执行如下操作:
⑴ 访问根结点;
⑵ 遍历左子树;
⑶ 遍历右子树。
2.中(根)序遍历的递归算法定义:
若二叉树非空,则依次执行如下操作:
⑴遍历左子树;
⑵访问根结点;
⑶遍历右子树。
3.后(根)序遍历得递归算法定义:
若二叉树非空,则依次执行如下操作:
⑴遍历左子树;
⑵遍历右子树;
⑶访问根结点。
-----------------------------------------------------------
class Node:
def __init__(self, data):
self.root = data
self.lchild = None
self.rchild = None
class Tree:
def __init__(self):
self.root = None
def add(self, data):
node = Node(data)
if self.root is None:
self.root = node
return
queue = [self.root]
while queue:
cur = queue.pop(0)
if cur.lchild is None:
cur.lchild = node
return
else:
queue.append(cur.lchild)
if cur.rchild == None:
cur.rchild = node
return
else:
queue.append(cur.rchild)
def breadth_travel(self):
if self.root is None:
return
queue = [self.root]
while queue:
cur = queue.pop(0)
print(cur.root, sep=' ', end=' ')
if cur.lchild is not None:
queue.append(cur.lchild)
if cur.rchild is not None:
queue.append(cur.rchild)
def front_travel(self, node):
if node is None:
return
print(node.root, end=' ')
self.front_travel(node.lchild)
self.front_travel(node.rchild)
def mid_travel(self,node):
if node is None:
return
self.mid_travel(node.lchild)
print(node.root,end=' ')
self.mid_travel(node.rchild)
def end_travel(self,node):
if node is None:
return
self.end_travel(node.lchild)
self.end_travel(node.rchild)
print(node.root, end=' ')
if __name__ == '__main__':
t = Tree()
for i in range(10):
t.add(i)
t.breadth_travel()
print()
t.front_travel(t.root)
print()
t.mid_travel(t.root)
print()
t.end_travel(t.root)
4-7 python 二叉树的实现,及其前中后序的实现。
最新推荐文章于 2025-01-21 09:36:24 发布