二叉树遍历共有四种方法,分别是前序遍历、中序遍历、后序遍历和层次遍历。
前序遍历: 父节点——左孩子——右孩子
中序遍历:左孩子——父节点——右孩子
后序遍历:左孩子——右孩子——父节点
层次遍历:利用队列解决,父节点出队,左右孩子进队
- #二叉树遍历
- #建立二叉树
- from collections import deque
- class Tree():
- def __init__(self,data):
- self.data=data
- self.lchild=None
- self.rchild=None
-
- a=Tree("A")
- b=Tree("B")
- c=Tree("C")
- d=Tree("D")
- e=Tree("E")
- f=Tree("F")
- g=Tree("G")
-
- e.lchild=a
- e.rchild=g
- a.rchild=c
- c.lchild=b
- c.rchild=d
- g.rchild=f
-
- #第一种方法:前序遍历
- def pre_read(root):
- if root:
- print(root.data,end=' ')
- pre_read(root.lchild)
- pre_read(root.rchild)
- print("1.前序遍历")
- pre_read(e)
- ##第二种方法:中序遍历
- def mid_read(root):
- if root:
- mid_read(root.lchild)
- print(root.data,end=' ')
- mid_read(root.rchild)
- print("\n2.中序遍历")
- mid_read(e)
- #第三种方法:后序遍历
- def back_read(root):
- if root:
- back_read(root.lchild)
- back_read(root.rchild)
- print(root.data,end=' ')
- print("\n3.后序遍历")
- back_read(e)
- ##第四种方法:层次遍历
- ##利用队列解决,父节点出队,左右孩子进队】
- def cengci_read(root):
- queue=deque()
- if root:
- 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)
- print("\n层次遍历")
- cengci_read(e)