二叉树的遍历是指从根结点出发,按照某种次序依次访问二叉树中所有结点,使得每个结点被访问一次且仅被访问一次。
为什么研究二叉树的遍历?
因为计算机只会处理线性序列,而我们研究遍历,就是把树中的结点变成某种意义的线性序列,这给程序的实现带来了好处
数据结构定义
在二叉树遍历过程中用到了链表、堆栈、队列
节点定义
class node: #用链表实现队列 只用来记录节点
def __init__(self):
self.data = None
self.next = None
队列定义
class queue():
def __init__(self):
self.front = node()
self.rear = node()
self.front = None
self.rear = None
def push(self,data):
# print('加入新节点',data.data)
newnode = node()
newnode.data = data
newnode.next = None
if self.rear == None:
self.front = newnode #定义头指针
else:
self.rear.next = newnode #链接下一个指针
self.rear = newnode #和front指向同一个对象
def pop(self):
if self.front == None:
print('空队列')
else:
self.front = self.front.next
def get_front(self):
if self.front == None:
print('空队列')
else:
return self.front
堆栈定义
class stack():#用列表实现堆栈
def __init__(self):
self.top = node()
self.top = None
def push(self,data):
newnode = node()
newnode.data = data
newnode.next = self.top
self.top = newnode
def pop(self):
if self.top is None:
print('空堆栈')
else:
temp = self.top
self